Я пытаюсь написать библиотеку машинописного текста, которая используется несколькими другими приложениями машинописного текста. Чтобы сделать это, я поместил каждую библиотеку в отдельный модуль узла и установил библиотеку для создания своего файла объявления.
Для проверки у меня есть настройка общей библиотеки с одним файлом:
библиотека\guid.ts
export class Guid {
static EmptyGuid(): string {
return '00000000-0000-0000-0000-000000000000';
}
}
lib\tsconfig.json
{
"compilerOptions": {
"noImplicitAny": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"module": "amd",
"noEmitOnError": true,
"removeComments": false,
"target": "es5",
"sourceMap": true,
"declaration": true,
"outFile": "./lib/lib-b.js"
},
"exclude": [
"node_modules",
"!node_modules/@types",
"lib"
]
}
В итоге я получаю файл объявления, который выглядит так:
lib\lib-b.d.ts
declare module "guid" {
export class Guid {
static EmptyGuid(): string;
}
}
И, наконец, я установил модуль узла, чтобы он включал информацию о наборе текста:
библиотека\package.json
{
"name": "lib-b",
"version": "1.0.0",
"description": "",
"main": "./lib/lib-b.js",
"typings": "./lib/lib-b.d.ts",
"files": [
"lib"
],
"author": "",
"license": "ISC"
}
Теперь в приложении, которое использует библиотеку, я вношу ее с помощью npm:
приложение\package.json
{
"name": "web-app",
"version": "1.0.0",
"description": "",
"main": "./lib/index.html",
"author": "",
"license": "ISC",
"dependencies": {
"lib-b": "file:../LibB"
}
}
И в одном из его файлов я пытаюсь использовать библиотеку так:
import { Guid } from 'lib-b';
Но это дает мне следующую ошибку:
error TS2306: File '.../WebApp/node_modules/lib-b/lib/lib-b.d.ts' is not a module.
Я искал вокруг, но большинство примеров, которые я нашел, говорят о написании типов для уже существующей библиотеки JS - я не могу найти много, что говорит об использовании файла объявления из существующего кода машинописи. Должен ли файл декларации использоваться в других приложениях? Есть ли другой способ создания повторно используемых библиотек машинописных текстов?
"file:../LibB"
? - person Shaun Luttin   schedule 09.05.2017