2015-02-25 2 views
1

У меня есть два класса javascript, один называется AmazingMultiplier и один называется AmazingAdder. Я борюсь с написанием машинописного определения AmazingAdder. файл JavaScript, выглядит следующим образом:Определения машинописных описаний: как объявить класс внутри класса

MyModule.AmazingAdder = function(options){ 
    //some amazing code 

}; 

MyModule.AmazingAdder.Statuses={ 
    success: 1, 
    failure: 2 
}; 

Я не уверен, как объявить статусы объект в моем файле определений машинописи. Мой d.ts файл выглядит следующим образом:

declare module MyModule 
{ 
    export class AmazingMultiplier 
    { 
     result: number; 
     constructor(params: any?) 
    } 

export class AmazingAdder 
    { 
    constructor(params: any?) 
    class Statuses 
    { 
     success: number, 
     failure: number 
    } 
    } 

} 

Однако я получаю неожиданный маркер для «класса», где Статусы определены. Любая помощь будет оценена. Я прочитал учебники, но не понимаю, как я это сделаю.

+0

Я не думаю, что вы можете создать вложенные классы –

+0

возможный дубликат (HTTP [Любой путь к классам гнезда в машинописи?]: // StackOverflow. com/questions/13495107/any-way-to-nest-classes-in-typescript) –

+0

Я не совсем понимаю, что вы пытаетесь сделать. Можете ли вы уточнить, чего вы пытаетесь достичь? –

ответ

2

Вы можете создать класс и модуль с тем же именем. Кроме того, вы будете хотеть использовать перечисление для Statuses:

declare module MyModule { 
    class AmazingAdder { 
     constructor(params?: any); 
    } 
    module AmazingAdder { 
     enum Statuses { 
      success = 1, 
      failure = 2, 
     } 
    } 
} 
+1

Существуют и другие потенциальные решения. Но это самый идиоматический, который я бы сделал сам – basarat

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