Инициализация временных объектов интерфейса Typescript со всеми значениями свойств по умолчанию - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть интерфейс -

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";

Как мне этого добиться?

1 Ответ

1 голос
/ 13 апреля 2020

В идеале вы должны создать этот объект как литерал одного объекта. Таким образом, значение действительно имеет указанный тип с самого начала (вам нужно назначить только обязательные свойства):

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

Playground Link

Если это невозможно, вы можете инициализировать объект с пустым объектом и использовать утверждение типа, но значение не будет согласовываться с типом, поэтому вы должны убедиться, что процесс инициализации устанавливает все необходимые свойства:

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

Playground Link

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...