typescript 使用从接口导入的对象

ruarlubt  于 2023-02-25  发布在  TypeScript
关注(0)|答案(1)|浏览(132)

我有关于Angular/TypeScript的问题。也许这很明显,但我需要确认。
我正在创建接口并将其导出:

export interface MainObject {
  location: string;
  methodType: string;
  securityLevel: string;
  provider: string;
}

我在组件中导入它并创建空对象:

public descriptorCreateFinal: MainObject

当我想给对象赋值时:

descriptorCreateFinal.location = 'someString';

我看到错误,未声明“location”。
如果我像这样创建对象:

public descriptorCreateFinal: MainObject = {
    location: '',
    methodType: '',
    securityLevel: '',
    provider: '',
}

我可以给“descriptorCreateFinal.location”赋值,没有任何问题。
在这里我想知道,我是否真的需要在声明阶段设置对象中所有变量的值?

0vvn1miw

0vvn1miw1#

声明

descriptorCreateFinal: MainObject

这只是声明了对象,并没有创建它。所以在你创建/赋值它之前,它是未定义的。

示例

因此,正如您已经注意到的,当您实际分配对象时,它确实起作用:

descriptorCreateFinal: MainObject = {
    location: '',
    methodType: '',
    securityLevel: '',
    provider: '',
}

速记示例化

但是,这两种方法中的任何一种都可以工作,具体取决于项目中的 typescript 有多严格:

const descriptorCreateFinal = {} as MainObject

const descriptorCreateFinal = {} as Partial<MainObject>

备选

  • 根据您的使用情况,您也可以使用类作为接口,这样您可以使用带有'new'关键字的构造函数,但通常情况下,如果您不需要类,则使用接口更好,因为在转化为JS时会删除接口(=更轻量级)。*

相关问题