Как машинопись найти файл .d.ts? - PullRequest
1 голос
/ 19 октября 2019

Я - новый разработчик машинописи, и я работаю над проектом с машинописью и веб-пакетом, для некоторой библиотеки, кодируемой с помощью js, нужен файл .d.ts, но я запутался, как веб-пакет находит .d.ts файл с import * as PIXI from 'pixi.js'?

Вот мои догадки:

  1. webpack найдет папку с именем pixi.js в "node_modules" и найдет package.json и если у него есть свойство types, просто выберите файл в качестве файла .d.ts.

  2. , если он не можетнайти файл .d.ts способом 1, он идет в node_modules / @ types (или в другую пользовательскую папку), находит, существует ли папка с таким же именем pixi.js, и выбирает файл index.d.tsкак файл .d.ts.

  3. кстати, я обнаружил в index.d.ts они используют module, почему? Я знаю, что чиновник не рекомендует ключевое слово module (которое заменяется на namespace).

1 Ответ

0 голосов
/ 19 октября 2019

Файл .d.ts обычно размещается рядом с файлом .ts, для которого указывается типография. Хотя компиляторы ts просто сопоставляют файлы с именами модулей, сами по себе, даже не помещая их рядом.

Он должен работать так же с веб-пакетом, компилятор просто знает, как найти наборы, если вы просто укажете на неготуда, где они есть.

Например, у меня есть папка с названием typings, в которую я помещаю все свои пользовательские наборы для моего экспресс-приложения. И мой tsconfig выглядит как

{
    "compilerOptions": {
        "noImplicitAny": true,
        "esModuleInterop": true,
        "target": "es5"
    },
    "include": [
        "app/**/*"
    ]
}

И так как моя папка для ввода находится в ./app, у компилятора нет проблем, поиск моих файлов .d.ts и мой gulpfile.js выглядит как

var gulp = require('gulp');
var ts = require('gulp-typescript');
var tsProject = ts.createProject('tsconfig.json');

gulp.task('buildTS', () => {
    return tsProject.src()
        .pipe(tsProject())
        .js.pipe(gulp.dest('build'));
});

gulp.task('ts:watch', function (cb) {
    gulp.watch('./app/**/*.ts', gulp.series(['buildTS', 'server']))
    cb(null);
});

И я хотел использовать пакет под названием custom-env, в котором нет ts-типов в репозитории @types. поэтому я просто создал custom-env.d.ts с содержимым

declare module 'custom-env';
// This is a workaround. Always provide full and correct typings.

, чтобы я мог его импортировать и использовать. Без этого зависимый файл не будет компилироваться. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...