【发布时间】:2020-02-26 19:18:37
【问题描述】:
在下面的代码中,我定义了一个函数联合类型 GetThing,然后我将其用于 getThing 函数。
但是,当我检查name 或thing 的类型时,它们都是any。我希望name 是string 和thing 是Thing1 | Thing2
此外,我希望getThing 函数的返回类型取决于thing 参数的类型,这应该由switch 推断出来,但我们甚至还没有走那么远。
interface Thing1 {
type: "thing1";
}
interface Thing2 {
type: "thing2";
}
type GetThing1 = (name: string, thing: Thing1) => string;
type GetThing2 = (name: string, thing: Thing2) => boolean;
type GetThing = GetThing1 | GetThing2;
const getThing: GetThing = (name, thing) => {
switch (thing.type) {
case "thing1": {
return "thingy";
}
case "thing2": {
return true;
}
}
}
这是 Typescript 中的错误,是 Typescript 无法处理的推理层太深,还是我遗漏了什么?
【问题讨论】:
标签: typescript