打字机减速器不接受类型`string |空`

时间:2020-10-13 20:17:08

标签: typescript redux

我有一个减速器。它的字段可以包含stringnull

我有一个减速器接口

export interface ExpertFeedback {
  feedback: Feedback[],
  feedbackConversationMessages: Message[],
  feedbackConversation: string | null,
  // feedbackConversation: any,
}

已拆除内容的减速器

const INITIAL_STATE: types.ExpertFeedback = {
  feedback: [],
  feedbackConversationMessages: [],
  feedbackConversation: null
};

const expertFeedback = (state = INITIAL_STATE, action: types.AppActions): types.ExpertFeedback => 

使用类型any可以正常工作。但是,如果我将其设置为string | null类型,则会抛出该错误

Type 'string | null' is not assignable to type 'string'

any似乎草率。知道这里发生了什么吗?

2 个答案:

答案 0 :(得分:1)

Type 'string | null' is not assignable to type 'string'

此错误消息告诉您,如果您拥有可以是string | null的东西,则不能在期望string的地方使用它。

因此,基于此,我假设您正在访问某个feedbackConversation对象上的属性ExpertFeedback,并将其视为string对待。为此,您必须首先确认它不是null

if ( state.feedbackConversation !== null ) {
  // ok to treat as a string
  state.feedbackConversation.toLowerCase();
  someStringFunction( state.feedbackConversation );
}

答案 1 :(得分:0)

您在strictNullChecks中启用了tsconfig吗?