2016-09-04 1 views
2

В нашем приложении много объектов и т. П. Мы можем грубо разбиться на 3 категории; «ядро», «приложение» и «объекты».Как сбить большой файл index index.d.ts

Я следовал основной машинопись учебника в Интернете и в настоящее время существует единый index.d.ts, который имеет такой макет:

interface AH { 

} 

declare var ah: AH; 

declare module 'ah' { 
    export = ah; 
} 

declare module ah { 

    module objects { 
     // much objects 
    } 

    module app { 
     //many app 
    } 

    module core { 
     //such core 
    } 
} 

Однако из-за контроль архаичного источника мы используем, было бы полезно разбить этот отдельный файл на 3 отдельных файла для приложения, ядра и объектов, имея «пространства имен», доступные как ah.app.blah, ah.core.blah и ah.objects.blah.

Как я могу это достичь?

+1

много модульность , такое повторное использование. Вау. –

+0

На стороне примечания, index.d.ts файл декларации для модуля 'ah'? Не могли бы вы привести несколько примеров того, как вы будете использовать этот модуль в проекте? –

+0

Это действительно просто доступ к определениям объектов в проекте, поэтому мы можем предоставить статические типизации нашим разработчикам. Мы можем получить доступ к определениям типов через ah.core.fileSystemService и т. Д. ....... –

ответ

1

Если вы не используете эту библиотеку в другом проекте, нет необходимости в объявлении модулей.

Похоже, у вас есть два варианта здесь:

  1. Экспорт деклараций типа вы хотите выставить в отдельных файлах, и импортировать их, когда вы нуждаетесь в них. Поскольку это, по-видимому, самая распространенная практика, также когда вы работаете с внешними модулями, я думаю, что это имеет мои личные предпочтения.

    app.d.ts (~ core.d.ts, objects.d.ts)

    export interface theAppInterface {} 
    

    SRC/index.ts (пример использования)

    import { theAppInterface } from '../app' 
    import { theCoreInterface } from '../core' 
    
    let appUsage: ah.app.theAppInterface 
    
  2. Объявляйте отдельные категории в глобальных файлах декларации, поэтому они попадают в глобальное пространство имен, и вам не нужно их отдельно импортировать. Например.

    app.d.ts (~ core.d.ts, objects.d.ts)

    declare namespace ah { 
        namespace app { 
        interface theAppInterface {} 
        } 
    } 
    

    SRC/index.ts

    let appUsage: ah.app.theAppInterface 
    let coreUsage: ah.core.theCoreInterface 
    
Смежные вопросы