gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-30 21:27:09 25 4
gpt4 key购买 nike

目前我正在按以下方式定义我的类构造函数

class MyClass {

routerStore: RouterStore
characterStore: CharacterStore
characterPrivateStore: CharacterPrivateStore

constructor(
routerStore: RouterStore,
characterStore: CharacterStore,
characterPrivateStore: CharacterPrivateStore
) {
super()
this.routerStore = routerStore
this.characterStore = characterStore
this.characterPrivateStore = characterPrivateStore
}
}

这让我觉得冗长和重复。鉴于 TypeScript 利用了一些最新的 JavaScript 提案,我想问问是否有可能以某种方式清理它?

最佳答案

您可以向构造函数参数添加访问修饰符。这将使参数也是一个类字段,将使用参数的值进行初始化。

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
})

关于javascript - 一种在 TypeScript 中清理类构造函数的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52628079/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com