TS中可以使用enum
或者const enum
声明枚举,应该都知道就不说了。这个写法有一个问题,就是必须导入
才能使用。在类型本身其实并不需要导入的情况下,由于引用了枚举导致类型也需要导入,且由此派生的都需要导入,比如下面这样,作为强迫症就很难忍了。
/** xx.ts **/
export enum DemoEnum {
Hello
}
/** typings.d.ts **/
import {Hello} from 'xx';
interface Demo {
hello: Hello;
}
/** otherTypings.d.ts **/
import {Demo} from 'typings';
interface Demo2 extend Demo {
other: any;
}
反正我是宁可多些点代码也不希望看到多余的引用的,所以就有了现在这个写法。目的就是把类型和常量分离,这样所有的d.ts
文件中就不会出现import
了。
/** typings.d.ts **/
declare module Demo {
type Hello = 'Hello';
type World = 'World';
type DemoEnum = Hello | World;
interface Demo {
demo: DemoEnum;
}
}
/** constants.ts **/
const DemoEnum: {Hello: Demo.Hello; World: Demo.World} = {Hello: 'Hello', World: 'World'};
export const DemoConstants = {
DemoEnum,
}
如果你有更好的办法请告诉我哈,不胜感激。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。