Add tests

This commit is contained in:
Anders Hejlsberg 2019-02-02 09:37:52 -08:00
parent be4fb30e61
commit 332861b4fc

View file

@ -33,6 +33,7 @@ type T15 = ReturnType<any>; // any
type T16 = ReturnType<never>; // never
type T17 = ReturnType<string>; // Error
type T18 = ReturnType<Function>; // Error
type T19<T extends any[]> = ReturnType<(x: string, ...args: T) => T[]>; // T[]
type U10 = InstanceType<typeof C>; // C
type U11 = InstanceType<any>; // any
@ -168,3 +169,13 @@ type EnsureIsString<T> = T extends MustBeString<infer U> ? U : never;
type Test1 = EnsureIsString<"hello">; // "hello"
type Test2 = EnsureIsString<42>; // never
// Repros from #26856
function invoker <K extends string | number | symbol, A extends any[]> (key: K, ...args: A) {
return <T extends Record<K, (...args: A) => any>> (obj: T): ReturnType<T[K]> => obj[key](...args)
}
const result = invoker('test', true)({ test: (a: boolean) => 123 })
type Foo2<A extends any[]> = ReturnType<(...args: A) => string>;