typescript 如何限制函数参数的值?

新手上路,请多包涵
// data 数据是固定的
const data = [{},{},{}]

function set(index){
 // ...
}

如何限制参数 index 只能是 0 1 2 (数组的下标)
阅读 2.5k
3 个回答

这个意思???


type i = 0|1|2

function set(index:i){
 // ...
}

如果是这个意思哪就可以这样写

const data = [{},{},{}] as const 


type ArrIndex<T extends readonly any[]> = Exclude<Partial<T>["length"], T["length"]>
type IndexType = ArrIndex<typeof data> 
function set(index:IndexType){

}


set(2) //ok
set(3) //eror

function set(index: 0 | 1 | 2) {

// ...

}

type TupleIndices<A extends readonly any[], Acc = never>
    = A extends readonly [any, ...infer T]
    ? TupleIndices<T, Acc | T['length']>
    : Acc

const data = [{},{},{}] as const
function set(index:TupleIndices<typeof data>){
 // ...
}

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Microsoft
子站问答
访问
宣传栏