Машинопись: Требовать (новый) файл TYPINGS правильным способом (в узле)?
Я очень запутался в том, что касается импорта файла Typings, кажется, есть много способов сделать это.
Я пишу программу для nodejs.
Я установил момент JJ через наборы (не внешний модуль), и мне удалось импортировать его так
var testOne = require('moment/moment');
import * as testTwo from 'moment';
import * as testThree from 'moment/moment';
Кажется, все три способа работают. 1-й вариант - это исходный узел, требующийся так, как я привык... другие 2 кажутся импортом машинописного текста.
Я использовал единственную структуру каталогов момент и момент / момент, и они, кажется, одинаково работают.
Я игнорирую наборы / браузер...
Так что моя структура каталогов на данный момент фактически хранится здесь
/typings/main/definitions/moment/index.d.ts
Так я должен использовать момент или момент / момент?
Я попытался проверить документы, и я не знаю, правильно ли я понимаю, но какой импорт мне использовать, когда?
А что касается набора текста?
Команда для набора команд, которую я использовал для установки моментов, была
typings install moment
1 ответ
И то и другое import * as testTwo from 'moment';
а также var testOne = require('moment');
действительны и правильный способ импорта модуля.
Разница в том, что первый загрузит определение своего типа во время разработки, intellisense сработает, и компилятор проверит его на лету (если вы используете IDE, которая поддерживает этот материал). В проекте TypeScript первое предпочтительнее второго. Но здесь важно то, что оба компилируются и запускаются, как и ожидалось.
import * as testTwo from 'moment/moment';
а также var testOne = require('moment/moment');
также действительны, но не должны использоваться.
moment/moment
модуль создается по наборам (только внутри moment.d.ts
) при загрузке определения из реестра. Они нашли способ предотвратить конфликты. Взгляните на оригинальный файл moment.d.ts из реестра, он отличается от файла, который есть в вашей локальной системе.
Более того, вы выбрали плохую библиотеку для сравнения. require('moment/moment')
также работает, потому что есть moment.js
файл внутри корня moment
путь проекта. Но это не распространено, не все пакеты делают это, и этого следует избегать. Пакеты предназначены для использования, просто ссылаясь на его имя.