我有一个泛型函数,它带有两个参数,其中一个是类型变量,null和undefined的和,另一个是类型变量。 Typescript从第二个参数推断出type变量。
我已经知道注释的方法-使用<>
或第二个参数的类型断言明确设置类型变量。
我正在考虑深入研究条件类型以查看它们是否可以过滤掉条件类型,但我不清楚它们是否可以过滤。
const or = <T>(x: T|null|undefined, y:T): T =>
x === null || x === undefined ? y : x;
const test: Map<string,number> = new Map();
const result = or(test.get('test'), 0);
我希望它进行类型检查,并且result
应该具有类型number
-而是得到“类型'number'不能分配给类型'0 | null | undefined'。”。 / p>
同样,有一个内容列表和一个空列表,我发现这些内容不能分配给never
。
答案 0 :(得分:0)
我明白了。
const or = <T, S extends T>(x: T|null|undefined, y:S>: T =>
x === null || x == undefined ? y : x;
我从一个稍微复杂一些的条件类型开始,然后意识到我可以将该假设移到另一个类型参数中。