TypeScript/tests/cases/compiler/lambdaParameterWithTupleArgsHasCorrectAssignability.ts

22 lines
625 B
TypeScript
Raw Normal View History

// @strict: true
type MyTupleItem = {};
type MyTuple = [MyTupleItem, ...MyTupleItem[]];
type GenericFunction<T extends MyTuple> = (...fromArgs: T) => void;
class GenericClass<T extends MyTuple> {
from: GenericFunction<T> | undefined;
}
function createClass<T extends MyTuple>(f: GenericFunction<T>): GenericClass<T> {
return new GenericClass<T>(/* ... use f */);
}
function consumeClass(c: GenericClass<[string, boolean]>) { }
// should work
consumeClass(createClass(str => console.log(str.length)));
// should work
consumeClass(createClass((str, _unused_num) => console.log(str.length)));