在TypeScript中扩展数据对象
Extending Data Object in TypeScript
我试图通过添加一些新字段来扩展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;
}
这种类型的强制转换的正式名称是类型断言,它告诉编译器相信您的对象可以被视为您指定的类型。
相关文章:
- 在控制器和数据对象之间同步数据
- AngularJs指令,该指令创建内部有数据对象的新指令
- 从数据对象数组创建折线图
- Vue.js 数据对象不适用于某些 lodash 函数
- 无法获取带有 .data(el,'dataname').sublev 的数据对象
- React.js+Flux-正确初始化存储中的数据对象
- 如何调用另一个js文件中的函数或触发一个自定义事件,该事件将参数作为Jquery中的数据对象传递
- Meteor模板数据对象可防止javascript事件触发
- 我该如何访问由gullow灰质插件创建的数据对象(当使用nunjucks编译html文件时)
- 如何使用javascript数据对象?如何通过变量访问条目
- Knockout:为许多数据对象绑定模板引导模式
- 如何将数据对象添加到JSON对象中
- jQuery+php如何在数据对象中返回多个值
- $http put v create - 每个 (JavaScript) 中从 .success() 返回的数据对象有什
- 数据对象内的 D3 循环数组
- 在jQuery的.on()数据对象中访问$(this)
- AngularJS模态窗口数据/对象流
- 关于在 Vue.js 中设置数据对象属性的最佳实践
- 如何构建数据对象以在不知道多少时传递给 ajax
- 如何访问放置在谷歌地图上的geoJSON数据中的数据对象