gpt4 book ai didi

typescript - 为什么 TypeScript 在转换时不提示未包含在状态中的属性?

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

为什么 TypeScript 的行为方式与我的情况相同?

如果我直接输入一个对象,它会提示接口(interface)中没有定义的属性。但是,如果我转换对象,它允许添加任何未在界面中定义的随机属性。

最好用一个例子来解释:

interface House {
windows: number;
garden: boolean;
}

const house1: House = {
windows: 5,
garden: true,
garage: true // not allowed
};

const whatever = {
house2: <House> {
windows: 3,
garden: true,
garage: true // why is it here allowed?
}
};

最佳答案

之所以有效,是因为它是一个 Type Assertion .基本上告诉编译器它是什么类型但不保护它,例如

const house1 = <House> {
windows: 5,
garden: true,
garage: true // allowed
};

基本上,您告诉 ts-compiler 不要执行特殊的数据检查或重组。

您可以使用属性的适当类型对其进行类型保护,例如

const whatever: { house2: House } = {
house2: {
windows: 3,
garden: true,
garage: true // not allowed
}
};

关于typescript - 为什么 TypeScript 在转换时不提示未包含在状态中的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56790627/

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