Подтвердить что ты не робот

Как добавить пользовательские "наборы" в машинописный текст 2.0/3.0

В соответствии с этой система типизированных статей для typescript 2.0 изменилась, и поэтому неясно, как присоединить пользовательские типизации сейчас. Должен ли я всегда создавать пакет NPM для этого?

Заранее благодарю вас!

4b9b3361

Ответ 1

Вы можете создавать локальные настраиваемые типизации только для своего проекта, где вы можете объявлять типы для библиотек JS. Для этого вам необходимо:

  • Создайте структуру каталогов, чтобы сохранить файлы объявления типа, чтобы ваша структура каталогов выглядела примерно так:

    .
    ├── custom_typings
    │   └── some-js-lib
    │       └── index.d.ts
    └── tsconfig.json
    
  • В файле index.d.ts добавьте объявление для вашей библиотеки JS:

    declare module 'some-js-lib' {
      export function hello(world: string): void
    }
    
  • Добавьте ссылку на объявление этого типа в разделе compilerOptions вашего tsconfig.json:

    {
      "compilerOptions": {
        ...
        "typeRoots": ["node_modules/@types", "custom_typings"]
      },
      ...
    }
    
  • Используйте объявленный модуль в своем коде:

    import { hello } from 'some-js-lib'
    
    hello('world!')
    

Ответ 2

Предполагая, что ваш внешний js-пакет установлен под node_modules, я думаю, что есть два варианта:

  • предоставить файл объявления typescript в пакете и добавить ссылку на него:

    // node_modules/secret-package/index.d.ts
    export interface SecretInterface {
      // ¯\_(ツ)_/¯
    }
    

    И ссылайтесь на файл типизации в package.json:

    // node_modules/secret-package/package.json
    {
       ..., 
       "typings": "./index.d.ts",
       ...,
    }
    
  • добавьте модуль в файл объявления вашего проекта

    // index.d.ts
    declare module 'secret-package' {
      interface SecretInterface {
        // ¯\_(ツ)_/¯
      }
    }