【发布时间】:2022-02-17 08:59:10
【问题描述】:
我正在尝试将类实例成员属性设置为接受动态值的类型化对象的值。类实例成员属性是布尔值,而我在对象上设置的值是布尔值...
interface Cat {
[ index: string ] : string | number | boolean
}
class Test {
private result : boolean | undefined;
doIt () {
let c: Cat = { purring: true }
this.result = cat.purring;
}
}
我在尝试分配 this.result 的行上遇到错误:
键入'字符串 |号码 | boolean' 不能分配给类型 'boolean | 不明确的'。类型 'string' 不可分配给类型 'boolean | 未定义'。
我似乎只有这样做才能完成这项工作:
this.result = cat.purring as boolean;
我希望我不必这样做...? ...
还有一个类似的问题,我只是想允许一个字符串数组的值或者一个字符串数组的数组:
type StringOrNestedString = string[] | StringOrNestedString[]
interface Item {
filters: StringOrNestedString,
}
let i: Item = {
filters: ['foo', ['bar']],
}
我得到:
类型 '(string | string[])[]' 不可分配给类型 'StringOrNestedString'。 类型 '(string | string[])[]' 不可分配给类型 'string[]'。
【问题讨论】:
标签: typescript