Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从TypeScript中的数组中获取只读项类型?_Typescript_Typescript Generics - Fatal编程技术网

如何从TypeScript中的数组中获取只读项类型?

如何从TypeScript中的数组中获取只读项类型?,typescript,typescript-generics,Typescript,Typescript Generics,如何从数组常量中获取只读项数组 const基本值类型=[{ 值:'数字', 标签:“编号” },{ 值:'布尔', 标签:“布尔” }]; 键入ReadonlyItemArray=??? 类型ReadOnlyBasicValueTypes=ReadonlyItemArray; /* ↓↓↓↓ ReadOnlyBasicValue类型=( {值:'number',标签:'number'} |{值:'boolean',标签:'boolean'} ) */ 更新: 我发现我可以将每一项都设置为con

如何从数组常量中获取
只读项数组

const基本值类型=[{
值:'数字',
标签:“编号”
},{
值:'布尔',
标签:“布尔”
}];
键入ReadonlyItemArray=???
类型ReadOnlyBasicValueTypes=ReadonlyItemArray;
/*
↓↓↓↓
ReadOnlyBasicValue类型=(
{值:'number',标签:'number'}
|{值:'boolean',标签:'boolean'}
)
*/
更新: 我发现我可以将每一项
都设置为const

const基本值类型=[{
值:'数字',
标签:“编号”
}作为康斯特{
值:'布尔',
标签:“布尔”
}as const];
类型BasicValueTypes=类型BasicValueTypes[number]['value'];
//BasicValueTypes=“number”|“boolean”

但是我仍然想知道是否可以设计上面的
ReadonlyItemArray
type?

要使
基本值类型不可变(只读),可以使用
作为常量


常量基本值类型=[{
值:'数字',
标签:“编号”
}, {
值:'布尔',
标签:“布尔”
}]作为常量;
要获取类型,可以使用
typeof

type Immutable=基本值类型的类型
要创建文字类型,可以使用:

type Literal=[数字,字符串]
此外,还有内置的只读阵列:

类型Arr=ReadonlyArray
常数arr:arr=['a','b']
arr.push('c')//错误
但你不能这样做:

const ReadOnlyBasicValueTypes=ReadonlyItemArray;
因为类型不是构造函数,就像在F#中一样,它只是类型。TS编译器将从源代码中删除它们,您将收到纯js

更新

const基本值类型=[{
值:'数字',
标签:“编号”
},{
值:'布尔',
标签:“布尔”
}]作为常量;
基本类型=基本值类型的类型;
type Item=Basic[number]//检查此类型

要使
基本值类型
不可变(只读),可以使用
作为常量


常量基本值类型=[{
值:'数字',
标签:“编号”
}, {
值:'布尔',
标签:“布尔”
}]作为常量;
要获取类型,可以使用
typeof

type Immutable=基本值类型的类型
要创建文字类型,可以使用:

type Literal=[数字,字符串]
此外,还有内置的只读阵列:

类型Arr=ReadonlyArray
常数arr:arr=['a','b']
arr.push('c')//错误
但你不能这样做:

const ReadOnlyBasicValueTypes=ReadonlyItemArray;
因为类型不是构造函数,就像在F#中一样,它只是类型。TS编译器将从源代码中删除它们,您将收到纯js

更新

const基本值类型=[{
值:'数字',
标签:“编号”
},{
值:'布尔',
标签:“布尔”
}]作为常量;
基本类型=基本值类型的类型;
type Item=Basic[number]//检查此类型

对不起,它应该是
类型
而不是
常量
。我编辑了这篇文章。我做了一个更新,它应该是
type
而不是
const
。我编辑了这篇文章。我做了更新