gpt4 book ai didi

javascript - 在 TypeScript 中扩展数据对象

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

我正在尝试通过添加一些新字段来扩展 TypeScript 中的数据对象。虽然我猜这是 JavaScript 中的一种非常常见的模式,但如果不在下面的代码片段中将 bar 设为可选,我就无法使其编译。

我想知道是否有任何方法可以避免使 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;
}

最佳答案

您可以通过编译时将 input 转换为 ExtendedDataObject 而不是仅仅将其分配给 output 来做到这一点:

interface ExtendedDataObject extends BaseDataObject {
bar: string;
}

function extendData(input : BaseDataObject) : ExtendedDataObject {
var output = input as ExtendedDataObject;
output.bar = input.foo + ' some suffix';
return output;
}

这种类型转换的官方名称是type assertion它告诉编译器相信您可以将对象视为您指定的类型。

关于javascript - 在 TypeScript 中扩展数据对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38044950/

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