首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Typescript中隐式创建元组

在Typescript中隐式创建元组
EN

Stack Overflow用户
提问于 2018-04-09 17:21:23
回答 3查看 4.5K关注 0票数 14

有没有一种方法可以在Typescript中创建一个没有类型提示的元组?

如果我简单地这样做

代码语言:javascript
复制
const tuple = [1, 2];

元组number[]的类型

我能找到的最接近眼线的是

代码语言:javascript
复制
const tuple: [number, number] = [1, 2];

是我错过了什么,还是这是唯一的办法?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-02-05 16:24:22

从TypeScript 3.4开始,您可以简单地在末尾添加as const

代码语言:javascript
复制
const tuple = [1, 2] as const;

完全归功于@bela53的答案,它有一个更好的例子,并链接到TS游乐场。

票数 3
EN

Stack Overflow用户

发布于 2018-09-21 21:39:35

使用typescript 3.0,您可以拥有自己的实用函数:

代码语言:javascript
复制
const tuple = <T extends any[]>(...args: T): T => args

并这样使用它:

代码语言:javascript
复制
const tup = tuple(1, 2) // tup type is [number, number]
票数 21
EN

Stack Overflow用户

发布于 2022-02-19 17:21:27

我添加了这个答案以供参考,因为我发现as const创建只读元组和其他技术拓宽了值的类型是一件痛苦的事情

代码语言:javascript
复制
const tuple = <T extends any[]>(xs: readonly [...T]): T => xs as T;

它有两种使用方式:

代码语言:javascript
复制
const a = tuple(['foo', 10] as const)

a的类型为["foo", 10],不是只读的,并且typeof a[number]"foo" | 10

代码语言:javascript
复制
const b = tuple(['foo', 10]);

b的类型为[string, number]typeof b[number]的类型为string | number

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49729550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档