gpt4 book ai didi

typescript - 使用对象解构来分配类成员

转载 作者:行者123 更新时间:2023-12-03 23:56:24 26 4
gpt4 key购买 nike

我目前正在将遗留代码转换为项目的 typescript 。该项目包含许多用纯 javascript 编写的自定义类,它们遵循相同的模式,即具有一个构造函数,该构造函数接受一个配置对象,该对象可以在其中定义许多配置选项。

我一直在玩弄如何在 typescript 中定义允许的配置属性,但还没有提出我完全满意的解决方案。我首先为配置声明了一个接口(interface),它允许我定义可用的配置选项,但无助于默认它们 - 我必须为定义和初始化复制我的配置接口(interface)两次或更多次。我(想我)想要的是使用对象解构来使用默认值定义类成员一次,之后不必担心它,例如:

export interface MyClassConfig {
propA: string;
propB: boolean;
}

export class MyClass {
private propA: string = 'defautValue';
private propB: boolean;

constructor (config: MyClassConfig) {
{ propA, propB } = config;
}
}

然后可以使用以下内容对其进行初始化:
let mc = new MyClass({ propB: false });   //mc.propA == 'defaultValue', mc.propB === false

我不喜欢这需要我多次复制属性名称。任何人都可以提出一个很好的干净的方法来实现这一点吗?

最佳答案

我面临着同样的问题:解构和分配给类(class)成员。

我找到了以下解决方案,可以满足我的需求,也许还可以满足您的需求:

interface MyClassConfig {
propA?: string; // Note the '?' for optional property
propB: boolean;
}

class MyClass {
private propA: string = 'defautValue';
private propB: boolean;

constructor (config: MyClassConfig) {
({ propA: this.propA = this.propA, propB: this.propB } = config);
}
}

const myClass = new MyClass({ propA: 'aaa', propB: true });
console.log(myClass)

// MyClass:
// propA = 'aaa';
// propB = true;

const myClass2 = new MyClass({ propB: false });
console.log(myClass2)

// MyClass:
// propA = 'defaultValue';
// propB = false;

MDN Destructuring assignment “分配新变量名称并提供默认值”一章。

参见 JSBin 获取 working sample

关于typescript - 使用对象解构来分配类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45690664/

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