Машинопись: Требовать (новый) файл 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 путь проекта. Но это не распространено, не все пакеты делают это, и этого следует избегать. Пакеты предназначены для использования, просто ссылаясь на его имя.

Другие вопросы по тегам