gpt4 book ai didi

javascript - Typescript - 如何声明具有已知属性的匿名对象?

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

在 JS 中,我的很多模块只是包装静态函数、枚举和属性的对象。例如,我有一个模块 Debug 与此类似(我真的简化了它):

export default Debug = {
// Current mode set, enum value from Modes. Setted outside of the module (see below).
mode : null,

// Enum of all possible modes
Modes : {
DEV : 0,
PROD : 1,
},

// getter, checks if it's in production mode
get isInProdMode() {
return Debug.mode === Debug.Modes.PROD;
},

// If the condition is met, it will throw an error in development mode, or just silently log a warning in production mode
assert : function(condition, message){
if (condiftion) {
if (Debug.isInProdMode)
console.warn(message);
else
throw message;
}
}
}

// index.js
Debug.mode = Debug.Modes.DEV;

如何在 Typescript 中制作这样的匿名对象?使用枚举作为属性?还有吸气功能?所有属性都是已知的。我真的卡住了。

最佳答案

我倾向于解决这些情况的方法是只为匿名对象的属性创建接口(interface),然后为匿名对象创建接口(interface):

enum Modes {
DEV = 0,
PROD = 1,
}

interface IDebug {
mode: Modes | null;
Modes: typeof Modes;
readonly isInProdMode: boolean;
assert: (condition: boolean, message: string) => void;
}

const Debug: IDebug = {
mode: null,
Modes,
get isInProdMode() {
return Debug.mode === Debug.Modes.PROD;
},
assert: (condition, message) => {
if (condition) {
if (Debug.isInProdMode) {
console.warn(message);
} else {
throw message;
}
}
},
};

export default Debug;

关于javascript - Typescript - 如何声明具有已知属性的匿名对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48431902/

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