创建(实例化)声明类型的打字稿对象

时间:2018-07-23 09:25:14

标签: angular typescript

Angular(6)路由器“ Params”对象声明如下:

export declare type Params = {
    [key: string]: any;
};

按以下方式实例化是否错误? -

newParams = new Params();

要向其添加项目,如下所示:

params.push({name: value});

Pycharm说我无法初始化自己的方式。是Params类型还是某种其他需要处理的高级类型?

2 个答案:

答案 0 :(得分:1)

在使用Params类型alias的情况下,它告诉您它是(或期望)具有键|值对的对象文字,其值的类型为any

export declare type Params = {
    [key: string]: any;
};

它不是class,因此无法实例化它。 Officially被称为type alias,其作用类似于接口而不是类,但有一些区别,例如不能由类实现

并不是很有帮助,因为每个对象都可以具有键|值对,但是在某些情况下,出于文档目的,别名被使用

ActivatedRoute 文档中,我们可以看到params的Observable返回类型为Params的对象-因此我们知道将存在一些可以使用属性访问器括号访问的值符号route.snapshot.params["id"];

params  Observable<Params>  
An observable of the matrix parameters scoped to this route

答案 1 :(得分:0)

猜想它要复杂得多,但是简单的答案是,只需使用一个空对象将其初始化,如下所示:

const params: Params = {};

从Angular开源中获取它...有时最好的方法就是挖掘源代码:-)