Typescript будет делать вывод, основываясь на типе возвращаемого значения, поэтому, например, здесь T
будет выведено привет:
function myFunc<T>(): { prop: T } {
return null as any;
}
const myObj: {prop: 'hello'} = myFunc(); // T is inferred to hello if we hover in VS Code over the call we can see this.
Сформируйте свой вопрос, хотя я не думаю, что это то, что вы ищете,Если вы хотите, чтобы T
выводился как строковый литерал, вам нужно указать T extends string
, и тогда вам не нужно указывать дополнительную аннотацию типа:
function myFunc<T extends string>(value: T): { prop: T } {
return null as any;
}
const myObj: {prop: 'hello'} = myFunc('hello'); // T is inffered to hello
const myObj2 = myFunc('hello'); // T is inffered to hello, myObjs2 is typed as {prop: 'hello'} , no types necessary