gpt4 book ai didi

Typescript 联合类型 : Dealing with Interfaces

转载 作者:搜寻专家 更新时间:2023-10-30 20:37:46 25 4
gpt4 key购买 nike

如果您有两个足够相似的接口(interface),您希望通过相同的逻辑来运行它们,那么处理这种情况的正确方法是什么:

interface DescriptionItem {
Description: string;
Code: string;
}
interface NamedItem {
Name: string;
Code: string;
}

function MyLogic(i: DescriptionItem | NamedItem) {
var desc = (<DescriptionItem>i).Description || (<NamedItem>i).Name;

return i.Code + ' - ' + desc;
}

这行得通;但是,我的问题是关于改进 var desc = ... 行。我所拥有的是最好的选择吗?或者在 Typescript 中有更好的方法来处理这种情况吗?

最佳答案

TypeScript interfaces 仅在编译时存在,因此您无法在运行时测试接口(interface)类型。您在问题中指定的代码很有意义,可能是您的最佳选择。

但是,如果您可以灵活地将 interfaces 更改为 classes,则可以使用 TypeScript 的类型保护来进行更优雅的类型检查:

class DescriptionItem {
Description: string;
Code: string;
}
class NamedItem {
Name: string;
Code: string;
}

function MyLogic(i: DescriptionItem | NamedItem) {
let desc: string;
if (i instanceof DescriptionItem) {
desc = i.Description;
} else {
desc = i.Name;
}

return i.Code + ' - ' + desc;
}

关于Typescript 联合类型 : Dealing with Interfaces,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35726858/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com