gpt4 book ai didi

typescript - 在 typescript 中打字

转载 作者:搜寻专家 更新时间:2023-10-30 21:07:10 26 4
gpt4 key购买 nike

我的函数有一个名为 param 的参数,如下所示:

function x(param: One | Two) {
//do something
}

interface One {
value: IValue,
name: string,
id: number
}
interface Two {
value: IValue2,
name: string,
id: number,
selected: boolean
}

我可以使用相同的参数,两个不同的接口(interface)吗?谢谢!

最佳答案

可以,而且参数语法正确!作为引用,TypeScript 将此称为 union type .

使用它们的主要警告是您只能访问所有类型的公共(public)成员 - 例如,您的两个接口(interface)都包含 namevalueid,这样你就可以在你的函数中使用它们。但是,只有 interfaceTwo 具有 selected 成员,因此它不可用。

顺便说一句,我不知道这个例子是不是你随便输入的,所以你可能已经知道了,但是你的接口(interface)定义不正确——你需要使用 interface 关键字并以分号结束行。给类型 TitleCase 命名也是一种约定:

function x(param: InterfaceOne | InterfaceTwo){
console.log(param.name); // Valid!
console.log(param.id); // Valid!

console.log(param.value); // Valid - but has the type IValue | IValue2,
// so you can only access the common fields
// of those types!

console.log(param.selected); // INVALID - InterfaceOne doesn't have a selected member
}

interface InterfaceOne {
value: IValue;
name: string;
id: number;
}

interface InterfaceTwo {
value: IValue2;
name: string;
id: number;
selected: boolean;
}

关于typescript - 在 typescript 中打字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37744098/

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