Vik*_*mar 7 types typescript reactjs react-redux
export const INCREMENT_ENTHUSIASM = 'INCREMENT_ENTHUSIASM';
export type INCREMENT_ENTHUSIASM = typeof INCREMENT_ENTHUSIASM;
export const DECREMENT_ENTHUSIASM = 'DECREMENT_ENTHUSIASM';
export type DECREMENT_ENTHUSIASM = typeof DECREMENT_ENTHUSIASM;
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?我无法理解这一点。这非常令人困惑,这是来自 https://github.com/Microsoft/TypeScript-React-Starter在“添加操作”部分下的内容。
我知道type关键字的作用,但这里看起来很混乱。
您发布的示例背后的想法是导出值和类型,以便您能够执行以下操作:
let myVar: INCREMENT_ENTHUSIASM;
Run Code Online (Sandbox Code Playgroud)
如果该行:
type INCREMENT_ENTHUSIASM = typeof INCREMENT_ENTHUSIASM
Run Code Online (Sandbox Code Playgroud)
缺少上述变量声明会引发错误:
找不到名称“DECRMENT_ENTHUSIASM”
Typescript 中的某些内容既是类型又是值,例如枚举和类,但接口或类型别名只是类型,在这种情况下,您也可以重用类型名称来创建值。
例如:
type MySingleton = {
getId(): string;
doSomething1(str: string): string;
doSomething2(num: number): number;
}
const MySingleton: MySingleton = {
getId: function () {
...
},
doSomething1: function(str: string): string {
...
},
doSomething2: function (num: number): number {
...
}
}
Run Code Online (Sandbox Code Playgroud)
有关打字稿中类型/值的更多信息,请参见此处:声明合并 - 基本概念
type INCREMENT_ENTHUSIASM = typeof INCREMENT_ENTHUSIASM;
Run Code Online (Sandbox Code Playgroud)
等于:
type INCREMENT_ENTHUSIASM = "INCREMENT_ENTHUSIASM";
Run Code Online (Sandbox Code Playgroud)
这使得INCREMENT_ENTHUSIASM字符串只能是"INCREMENT_ENTHUSIASM".
顺便说一句,为了避免重复(并消除可能的拼写错误),我想出了这样一个习语:
export namespace ShowIdEnum {
export const ALWAYS = 'always';
export const LABEL = 'label';
export const NEVER = 'never';
};
export type ShowIdEnum = typeof ShowIdEnum[keyof typeof ShowIdEnum];
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你 ;)
| 归档时间: |
|
| 查看次数: |
25157 次 |
| 最近记录: |