Angular(6)路由器“ Params”对象声明如下:
export declare type Params = {
[key: string]: any;
};
按以下方式实例化是否错误? -
newParams = new Params();
要向其添加项目,如下所示:
params.push({name: value});
Pycharm说我无法初始化自己的方式。是Params类型还是某种其他需要处理的高级类型?
答案 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开源中获取它...有时最好的方法就是挖掘源代码:-)