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

问题描述 投票:0回答:3

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

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

如下实例化会报错吗? -

newParams = new Params();

然后按如下方式添加项目:

params.push({name: value});

Pycharm 说我无法按照我的方式初始化。 Params 是一种类型还是某种需要以其他方式处理的更高级别类型?

angular typescript
3个回答
2
投票

使用 Params 类型

alias
时,它告诉您它是(或期望)具有键|值对的对象文字,值的类型为
any

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

它不是

class
,因此您无法实例化它。 官方它被称为
type alias
,其行为更像是一个接口而不是一个类,但有一些区别,例如无法通过类来实现

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

ActivatedRoute 文档中,我们可以看到

params
Observable 返回类型为
Params
的对象 - 所以我们知道可以使用属性访问器括号表示法来访问一些值
route.snapshot.params["id"];

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

0
投票

我猜它比这更复杂,但简单的答案是,只需用一个空对象初始化它,如下所示:

const params: Params = {};

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


0
投票
type ErrorResponse = {
  message: string;
};

const error: ErrorResponse = { message: 'Ups' };
© www.soinside.com 2019 - 2024. All rights reserved.