TypeScript中定义的对象文字键的类型是什么?

时间:2015-06-11 18:43:22

标签: javascript enums typescript webstorm object-literal

我没有使用TypeScript作为此应用程序的主要语言,但作为JetBrains'的类型提示辅助工具。 WebStorm和JSDocs一起。我还使用keyMirror实用程序来创建准枚举对象文字。

鉴于以下内容:

//enums.js
var keyMirror = require('keyMirror');
module.exports = {
    CRUDVerbs: keyMirror({ //keymirror mirrors the key to value in objects
        CREATE: null,
        READ: null,
        UPDATE: null,
        DESTROY: null
    }
}

//app.js
var enums = require('enums.js');
var CrudTypes = enums.CRUDVerbs;
/** @type {??????????} **/
var returnedVal = functionFromElsewhere();
if(returnedVal === CrudTypes.CREATE) {
//code
} //..etc...

returnedValCrudTypes.CREATE的类型是什么,为了在例如{...}中定义它enums.d.ts

1 个答案:

答案 0 :(得分:0)

keyMirror的

The code将属性键分配给值:

for (key in obj) {
    if (obj.hasOwnProperty(key)) {
        ret[key] = key;
    }
}

因此,returnValCrudTypes.CREATE的类型应为string

请注意,Object.keys(...)会在TypeScript中返回string[],并且以下代码会为所有键输出string

var obj = { 1: null, "2": null };
for (var key in obj) {
    console.log(typeof key);
}