function f<T>(defaultValue?: T) { return defaultValue; }
const definitelyUndefined = f<string>(); // type: string | undefined
const definitelyString = f<string>('foobar'); // type: string | undefined
Run Code Online (Sandbox Code Playgroud)
是否有可能定义f(),使得definitelyUndefined隐式undefined和definitelyString隐式string?
我的真实用例是我正在使用并希望改进的功能。它是function f<T>(o: { [key: string]: T }, key: string, defaultValue?: T),key[o]如果存在则返回,否则返回defaultValue。当我提供它时defaultValue,我保证会T回来,但 Typescript 认为它是T | undefined。
typescript ×1