typescript 警告

lvmkulzt  于 2023-02-05  发布在  TypeScript
关注(0)|答案(1)|浏览(140)

typescript 在下面的getOptionAt函数中给出Property 'text' does not exist on type 'string'的错误。
如果text属性只在options[ix]是一个对象时被访问,为什么它把它当作一个字符串?

type Options = Array<string|{
    text: string;
    disabled?: boolean;
}>

let options: Options = [
    "item",
    {
        text: "disabledItem",
        disabled: true
    }
];

function getOptionAt(ix: number) {
    // ERROR: `Property 'text' does not exist on type 'string'`
    return typeof options[ix] === 'object' ? options[ix].text : options[ix];
}
8iwquhpp

8iwquhpp1#

您需要将options[ix].textoptions[ix]强制转换为包含text属性的类型。

function getOptionAt(ix: number) {
    return typeof options[ix] === 'object' ? (options[ix] as {text: string}).text : options[ix];
}

相关问题