首页 > 解决方案 > 使用所有默认属性值初始化 Typescript 接口临时对象

问题描述

我有一个界面-

export interface ITreeNode {
    values: string[];
    key: string;
    isSubHeader?: boolean;
    hours?: number[];
    children?: ITreeNode[];
}

我想创建这个接口的一个临时对象,然后从不同的来源依次为它的属性赋值。

这不起作用,因为它说cannot assign value to property 'key' of undefined-

    let node: ITreeNode;
    node.key = "Something";

我如何实现这一目标?

标签: typescript

解决方案


理想情况下,您应该将此对象创建为单个对象文字。这样,值实际上从一开始就属于指定类型(您只需要分配强制属性):

let node:ITreeNode = {
    values: [],
    key: "A"
}

游乐场链接

如果这不可行,您可以使用空对象初始化对象并使用类型断言,但值不会与类型一致,因此您需要确保初始化过程设置所有必需的属性:

let node:ITreeNode = { } as ITreeNode
node.key = "A"

游乐场链接


推荐阅读