Added tests.

This commit is contained in:
Daniel Rosenwasser 2018-04-13 23:01:24 -07:00
parent 23ed9f8423
commit b409888cbc

View file

@ -0,0 +1,44 @@
// @target: esnext
declare function f<T>(strs: TemplateStringsArray, ...callbacks: Array<(x: T) => any>): void;
interface Stuff {
x: number;
y: string;
z: boolean;
}
export const a = f<Stuff> `
hello
${stuff => stuff.x}
brave
${stuff => stuff.y}
world
${stuff => stuff.z}
`;
declare function g<Input, T, U, V>(
strs: TemplateStringsArray,
t: (i: Input) => T, u: (i: Input) => U, v: (i: Input) => V): T | U | V;
export const b = g<Stuff, number, string, boolean> `
hello
${stuff => stuff.x}
brave
${stuff => stuff.y}
world
${stuff => stuff.z}
`;
declare let obj: {
prop: <T>(strs: TemplateStringsArray, x: (input: T) => T) => {
returnedObjProp: {
lastOne: T
}
}
}
export const c = obj["prop"]<Stuff> `${(input) => { ...input }}`
c.returnedProp.x;
c.returnedProp.y;
c.returnedProp.z;