簡體   English   中英

用於“魔術字符串”屬性的TypeScript 1.8定義文件Enum

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM