[英]TypeScript 1.8 definition file Enum for 'magic string' properties
我有一個需要在tsc 1.8項目中使用的js庫。 它的選項屬性之一是魔術字符串,該字符串指出它僅支持幾個值,即“默認”,“選項1”,“選項2”。 在我的.d.ts文件中,我想使用Enum作為此值,但無法解決該問題。 例如...
loggerjs.js(外部lib示例)
var loggerjs = (function(){
function log(severity) {
var message;
if (severity === "High") {
message = "OMG!";
}
else if (severity === "Low") {
message = "meh";
}
console.log(message)
}
});
loggerjs.d.ts
declare module "loggerjs" {
export enum Severity {
"Low",
"High"
}
export function log(severity: Severity);
}
需要配置
requirejs.config({
baseUrl: '',
paths: {
app: ''
},
shim:{
'loggerjs':{
exports:'loggerjs'
}
}
});
requirejs(['app']);
app.ts
import * as loggerjs from "loggerjs";
loggerjs.log(loggerjs.Severity.Low);
app.js(已編譯的js)
define(["require", "exports", "loggerjs"], function (require, exports, loggerjs) {
"use strict";
loggerjs.log(loggerjs.Severity.Low);
});
以上結果
app.js:3未捕獲的TypeError:無法讀取未定義的屬性“低”
枚舉不是您想要的,因為js使用字符串。
之所以收到該錯誤,是因為實際的實現沒有該枚舉,而只是聲明了它。
您正在尋找的被稱為字符串文字類型 ,它看起來像這樣:
declare module "loggerjs" {
export type Severity = "Low" | "High";
export function log(severity: Severity);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.