TypeScript/tests/cases/compiler/lambdaParameterWithTupleArgsHasCorrectAssignability.ts
Wesley Wigham 7b02c635b6
Report generic rest parameters as unreliable variance positions (#33020)
* Report generic rest parameters as unreliable variance positions

* Add example from discussion on #30301
2019-10-30 13:54:39 -07:00

22 lines
625 B
TypeScript

// @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)));