Typescript 运行时计算的枚举类型脚本

Typescript 运行时计算的枚举类型脚本,typescript,enums,Typescript,Enums,快速提问,这在TypeScript中可能吗?我知道允许使用字符串文字,为什么不允许使用普通字符串 import * as path from 'path'; enum Path { Root = path.parse(__dirname).root as Path } 输出: application/libs/enums.ts:23:12 - error TS2352: Conversion of type 'string' to type 'Path' may be a mista

快速提问,这在TypeScript中可能吗?我知道允许使用字符串文字,为什么不允许使用普通字符串

import * as path from 'path';

enum Path {
    Root = path.parse(__dirname).root as Path
}
输出:

application/libs/enums.ts:23:12 - error TS2352: Conversion of type 'string' to type 'Path' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first.

23     Root = path.parse(__dirname).root as Path

TypeScript的全部要点是将TS“透明化”为JS。枚举通常是与数据类型处于同一级别的强大语言功能,用于强制执行类型安全性


动态生成枚举是transpiler之上的一个级别,某种元语言,它可以在transpiler运行之前使用工具链中的外部工具生成typescript来实现,但这可能无法与编辑器/IDE很好地集成。整个过程可能与TypeScript的目标背道而驰,除非您希望完全生成所有内容、进行传输,并且以后再也不修改它。

TypeScript的整个要点是将TS“传输”到JS。枚举通常是与数据类型处于同一级别的强大语言功能,用于强制执行类型安全性


动态生成枚举是transpiler之上的一个级别,某种元语言,它可以在transpiler运行之前使用工具链中的外部工具生成typescript来实现,但这可能无法与编辑器/IDE很好地集成。整个过程可能与TypeScript的目标背道而驰,除非您希望完全生成所有内容,并进行传输,以后再也不会对其进行修改。

path.parse(\uu dirname).root as path
您将获得某种字符串和类型断言它是
path
,但在断言时,它不是。我打赌这可能会让编译器感到困惑,即使是在正常情况下,但在TS中,枚举应该是预先计算的,这样编译器就可以在编译期间验证它们的使用情况。如果生成是在编译后进行的,那么您就不能真正做到这一点。不确定是否可以启用某些规则来允许它,但似乎您不需要枚举,但可能需要某种类型的映射。
path.parse(\uu dirname).root as path
您得到某种字符串和类型,断言它是
path
,但在断言时,它不是。我打赌这可能会让编译器感到困惑,即使是在正常情况下,但在TS中,枚举应该是预先计算的,这样编译器就可以在编译期间验证它们的使用情况。如果生成是在编译后进行的,那么您就不能真正做到这一点。不确定是否可以启用某些规则来允许它,但似乎您不需要枚举,但可能需要某种类型的映射。啊,我明白了,所以枚举是一种常量,或者换句话说:在TypeScript中并非所有常量都必须是枚举?@KarlMorrison似乎在某些情况下可以计算枚举:啊,我明白了,因此,枚举是一种常量,或者换句话说:在TypeScript中并非所有常量都必须是枚举?@KarlMorrison在某些情况下,似乎可以计算枚举: