首页 > 解决方案 > 联合类型中的 Typescript null 不起作用

问题描述

interface Address {
  a: string
}

interface End {
  state: {
    addrList: null | (Address[]);
  };
}

class End {
  state = {
    addrList: [{
      a: '1'
    }],
  };
}

Error: Subsequent property declarations must have the same type. 
Property 'state' must be of type '{ addrList: Address[] | null; }', but here has type '{ addrList: { a: string; }[]; }'.

然后我得到了这个。

那么,我错过了什么吗?

https://www.typescriptlang.org/play?ts=4.0.2#code/JYOwLgpgTgZghgYwgAgIIBN1QgZx8gbwChlk4AuZHMKUAcyIF8ijRJZEUBREdQkqmDiRKxUqTiYoAGWDVKIAK4AbZcgA+yABQYsuHAG0AugEoA3AMYXmRBMrh5kPPmMHCUAXn7iyU2fOQDVx8KZAByAEYwgVJGIwAaS2sgA

在线演示

标签: javascripttypescript

解决方案


您忘记实现接口,这就是您的 End 类不知道应该分配给addrList的原因。接口也应该在名称之前有 I (这只是模式),这样你就可以避免名称冲突。

看一下这个

interface IAddress {
  a: string
}

interface IEnd {
  state: {
    addrList: (IAddress[] | null);
  };
}

class End implements IEnd {
  state = {
    addrList: [{
      a: '1'
    }],
  };
}


推荐阅读