enum KINDS {
STATIC = 1,
FIELD,
ARG,
VAR
}
enum ALL_KINDS {
STATIC = 1,
FIELD,
ARG,
VAR,
NONE
}
如何在第二个枚举中重用第一个枚举?
最佳答案
AFAIK,扩展枚举是under consideration,与此同时,您可以使用const对象代替:
const KINDS = <const>{
STATIC: 1,
FIELD: 2,
ARG: 3,
VAR: 4
};
const ALL_KINDS = <const>{ ...KINDS, NONE: 5 };
上面的线程中还有其他解决方法。
如果要检查此类型,请注意,从类型 Angular 来看,数字
enum
等效于number
:enum KINDS {
STATIC,
FIELD,
ARG,
VAR
}
declare function func(name: string, type: string, kind: KINDS): any;
func('foo', 'bar', KINDS.ARG); // compiles
func('foo', 'bar', 99); // compiles too (?)
如果按照上述建议使用对象,则还可以通过为该对象的所有可能值创建类型来强制执行严格的类型检查:
const KINDS = <const>{
STATIC: 1,
FIELD: 2,
ARG: 3,
VAR: 4
};
type KIND_VALUE = typeof KINDS[keyof typeof KINDS]
declare function define(name: string, type: string, kind: KIND_VALUE): any;
define('foo', 'bar', KINDS.ARG); // compiles
define('foo', 'bar', 99); // doesn't compile
这有点冗长,但是实际上您已经检查了类型。