TypeScript:对象可能是“未定义的”,在具有可选的、定义良好的键的对象上进行条件创建之后

3lxsmp7m  于 2024-01-04  发布在  TypeScript
关注(0)|答案(2)|浏览(178)

我有这个密码

  1. type t = "a" | "b"
  2. const o: { [key in t]?: Array<number> } = {}
  3. interface Thing {
  4. t: t;
  5. }
  6. const things: Array<Thing> = [{ t: "a"}]
  7. for (const thing of things ) {
  8. if (!(thing.t in o)) o[thing.t] = []
  9. o[thing.t].push(1)
  10. }

并得到错误Object is possibly 'undefined'.
TSPlayground链接

ryhaxcpt

ryhaxcpt1#

方法是

  1. for (const thing of things) {
  2. ; (o[thing.t] ??= []).push(1)
  3. }
q5iwbnjs

q5iwbnjs2#

在const o:{ [key in t]?:Array } = {}您添加了?从而使参数可选
像这样人也许能帮上忙

  1. type t = 'a' | 'b';
  2. const o: { [key in t]: Array<number> } = { a: [], b: [] };
  3. interface Thing {
  4. t: t;
  5. }
  6. const things: Array<Thing> = [{ t: 'a' }];
  7. for (const thing of things) {
  8. if (!(thing.t in o)) o[thing.t] = [];
  9. o[thing.t].push(1);
  10. }

相关问题