我声明了一个接口:
export interface ApplicationState extends RootState {
messages: [] | string[];
}
我是说我的属性应该是一个空数组或字符串数组。但是在突变中我得到一个错误:
[MutationTypes.APPEND_MESSAGES](state: ApplicationState, payload: string): void {
state.messages.push(payload);
},
TS2345:“字符串”类型的参数不可分配给“从不”类型的参数。
但如果我在打扫[] |,那么一切都好。我做错了什么或我不明白什么?
环境:
打字稿:3.9.7
您不能推送到只能是空数组的类型,因此会出现错误
[]。通常只使用
string[].如果您需要提醒您可能不存在数组元素,请尝试:
Array<string | undefined>或者
;(state.messages as string[]).push(payload)或者只是记住 state.messages[1] 可能是
undefined