2016-05-18 3 views
0

У меня есть js lib Мне нужно использовать в проекте tsc 1.8. Одним из свойств его опций является волшебная строка, которая утверждает, что она поддерживает только несколько значений, то есть «по умолчанию», «вариант 1», «вариант 2». В моем .d.ts я хотел бы использовать Enum для этого значения, но не могу решить, как это сделать. например ...Файл определения TypeScript 1.8 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 Uncaught TypeError: Cannot read property 'Low' of undefined

ответ

1

Enum не то, что вы после того, как из-за что js использует строки.
Вы получаете эту ошибку, потому что фактическая реализация не имеет этого перечисления, вы только объявили, что это так.

Что вы ищете называется String Literal Types и это будет выглядеть следующим образом:

declare module "loggerjs" { 
    export type Severity = "Low" | "High"; 

    export function log(severity: Severity); 
} 
+0

То огромное спасибо, как только я могу пометить как ответ я буду. Теперь я получаю сообщение «Uncaught TypeError: loggerjs.log не является функцией (...)». есть идеи? (редактирование для включения require config) –

+1

Мне нужно увидеть модифицированный код, который вызывает эту ошибку –

+0

Добавлен текущий код –

Смежные вопросы