4
我想通过添加一些新字段来扩展TypeScript中的数据对象。虽然我猜这是JavaScript中很常见的模式,但我无法使其能够编译,而不会使bar
在代码片段中成为可选项,如下所示。在TypeScript中扩展数据对象
我想知道有什么办法可以避免使bar
可选。 任何建议将受到欢迎,谢谢。
interface BaseDataObject {
foo: string;
}
interface ExtendedDataObject extends BaseDataObject {
bar?: string;
}
function extendData(input : BaseDataObject) : ExtendedDataObject {
var output : ExtendedDataObject = input;
output.bar = input.foo + ' some suffix';
return output;
}
看来这是避免它的唯一方法。 – choz
它的工作原理,谢谢。我假设编译时间检查丢失的字段被绕过,对吧? – Haocheng
@Haocheng对,这被正式称为[类型断言](https://basarat.gitbooks.io/typescript/content/docs/types/type-assertion.html),它告诉编译器相信你,对象可以视为您指定的类型。 – JohnnyHK