【发布时间】:2020-11-02 07:29:02
【问题描述】:
我有一个包含一些默认配置的对象。它的一些值不能静态定义,需要在运行时计算。要将这些默认值应用于对象,我将应用任何静态值,并执行和应用任何函数的返回。
const SETTINGS = {
prop1: true,
prop2: (config: Config): boolean => config.prop2,
prop3: (config: Config): number => config.prop2,
prop4: 0,
} as DefaultSettings
为此对象编写接口很困难。任何给定的属性都可以是或者静态值或返回值的函数。我希望接口能够表示多个此类对象,其中属性名称和属性类型相同,但任何属性都可以是值或函数。
interface DefaultSettings {
prop1: boolean
prop2: boolean
prop3: number
prop4: number
}
上面的接口假设所有属性都是静态值,这是不正确的。
如何键入一个可能是也可能不是函数的值?
【问题讨论】:
-
你的意思是像
prop2: boolean | (config: Config) => boolean这样的吗? -
@PoulKruijt 这就是我的意思,是的——尽管使用它的字面意思是
Member 'boolean' implicitly has an 'any' type. -
您能否详细说明上述建议有什么问题? typescriptlang.org/play/index.html#code/…
-
@AlekseyL。我没有将函数包装在额外的括号中,这会导致 Typescript 将其解释为文字箭头函数。这种方法有效!谢谢你。你知道我可以在文档中的哪里找到这个功能吗?
-
不,抱歉,在文档中也找不到这个
标签: typescript typescript-types dynamic-values