如何使用strictNullChecks来获取泛型类型推断以与限制性较小的类型进行匹配?

时间:2019-02-18 02:03:04

标签: typescript typescript-generics

我有一个泛型函数,它带有两个参数,其中一个是类型变量,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

1 个答案:

答案 0 :(得分:0)

我明白了。

const or = <T, S extends T>(x: T|null|undefined, y:S>: T =>
    x === null || x == undefined ? y : x;

我从一个稍微复杂一些的条件类型开始,然后意识到我可以将该假设移到另一个类型参数中。