Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.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
Javascript 如何从字符串数组定义类型?_Javascript_Arrays_Typescript_Types - Fatal编程技术网

Javascript 如何从字符串数组定义类型?

Javascript 如何从字符串数组定义类型?,javascript,arrays,typescript,types,Javascript,Arrays,Typescript,Types,目前我有: export const CValidEbookTypes = ['epub', 'mobi', 'pdf', 'azw3', 'txt', 'rtf']; export type IEbookType = 'epub' | 'mobi' | 'pdf' | 'azw3' | 'txt' | 'rtf'; 要获得有效图书类型数组和定义它们的typescript类型。这看起来很多余 有没有办法使用数组定义类型? 我的目标显然是避免写两次书。因此,任何其他解决方案都是受欢迎的。通过使用

目前我有:

export const CValidEbookTypes = ['epub', 'mobi', 'pdf', 'azw3', 'txt', 'rtf'];
export type IEbookType = 'epub' | 'mobi' | 'pdf' | 'azw3' | 'txt' | 'rtf';
要获得有效图书类型数组和定义它们的typescript类型。这看起来很多余

有没有办法使用数组定义类型?
我的目标显然是避免写两次书。因此,任何其他解决方案都是受欢迎的。

通过使用
作为常量,typescript将字符串文本推断为
CValidEbookTypes
的类型。然后,您可以使用
typeof CValidEbookTypes[number]

export const CValidEbookTypes = ['epub', 'mobi', 'pdf', 'azw3', 'txt', 'rtf'] as const;
export type IEbookType = typeof CValidEbookTypes[number];
// IEbookType will be "epub" | "mobi" | "pdf" | "azw3" | "txt" | "rtf"


您可以使用
CValidEbookTypes[number]
,但需要在数组后添加
as const
,以将类型推断为文本。