关于自定义数组类型

问题描述 投票:0回答:1

我是打字稿新手,我想从 JS 翻译以下结构:

{
  data: [
  
    'str', {
      func_1: () => 1,
      func_2: () => 1
    },

    'str-1', /* no attached functions */

    'str-2', { func_2: () => 1 },

    'str-3', /* no attached functions. */

    ...
  ],
  ...
}

我的想法是

data
数组将由可变数量的元组组成,其中第一个参数是一个字符串,第二个(可选)参数将是一个对象,带有在其之前调用字符串的函数.

这种方法有什么本质上的错误吗?我一直在尝试使用

tupples
Records
似乎不是一个选择,而
nullables
我只是还没有把注意力集中在泛型类型上,但无论如何我最终都会得到嵌套我不太满意的数组或对象。

谢谢

typescript types typescript-generics
1个回答
0
投票

您应该添加数组语法来创建元组,数据的类型可能如下所示:

游乐场

type Obj = {
    data: [string, functions?: Record<`func_${number}`, () => number>][];
}


const obj = {
  data: [
  
    ['str', {
      func_1: () => 1,
      func_2: () => 1
    }],

    ['str-1'], /* no attached functions */

    ['str-2', { func_2: () => 1 }],

    ['str-3'], /* no attached functions. */

  ],
} as const satisfies Obj
© www.soinside.com 2019 - 2024. All rights reserved.