一种在TypeScript中清理类构造函数的方法?

时间:2018-10-03 13:24:47

标签: javascript typescript class

此刻,我以以下方式定义类构造器

import pandas as pd
data = pd.read_csv('D:\\python\\python-cisco-status.txt', delim_whitespace=True, header=None)
for index, row in data.iterrows():
    if row[4] == 'administratively down' or row[4] == 'down':
        print(f"Interface {row[0]} is down in ")

这对我来说很冗长和重复。鉴于TypeScript利用了一些最新的JavaScript提议,我想问一下是否有可能以某种方式清除它?

1 个答案:

答案 0 :(得分:3)

您可以将访问修饰符添加到构造函数参数。这将使该参数也成为将使用该参数的值初始化的类字段。

class MyClass {


   constructor(
       public routerStore: RouterStore,
       public characterStore: CharacterStore,
       public characterPrivateStore: CharacterPrivateStore
    ) {
       super()
   }
}

您还可以使用Object.assign在类上声明字段,并使用映射类型仅提取字段键(不包括方法):

type JustFieldKeys<T> = { [P in keyof T] : T[P] extends Function ? never : P }[keyof T] 
class MyClass {

    public routerStore!: RouterStore,
    public characterStore!: CharacterStore,
    public characterPrivateStore!: CharacterPrivateStore
    constructor(params: Pick<MyClass, JustFieldKeys<MyClass>>) {
        Object.assign(this, params);
    }
}
new MyClass({
    characterPrivateStore: null,
    characterStore: null,
    routerStore: null
})