SolidJS:打字稿错误说值是 'undefined' 类型,尽管检查它不是

SolidJS: Typescript error says value is of type 'undefined' despite checking that it isn't

我有一些 SolidJS 代码,例如:

{value() !== undefined && <img src={srcs[value()]} />}

其中 value 是一个信号。我在 value() 下收到 TypeScript 错误,说 Type 'undefined' cannot be used as an index type.ts(2538)

这是什么意思,没有 // @ts-ignore 我该如何解决这个问题?

Typescript 无法知道 value() returns 每次调用的结果都是一样的。您可以对第二个 value()

使用 non-null 断言运算符
{value() !== undefined && <img src={srcs[value()!]} />}

或者您可以使用 <Show> 回调。 Show 会将 when 的值传递给回调,如果它正在显示,其类型将为 non-nullable:

<Show when={value()}>{value => <img src={srcs[value]} />}</Show>