Definitelytyped: webpack-env.d.ts не компилируется с node.d.ts

Созданный на 9 февр. 2016  ·  6Комментарии  ·  Источник: DefinitelyTyped/DefinitelyTyped

Прежде чем вы спросите: Да, я искал - и нашел # 6334 - хотя это не решает мою проблему.

Я пишу веб-приложение, использующее Webpack. В результате мне нужен доступ к webpack-env.d.ts во внешнем интерфейсе, но я также заинтересован в использовании модуля url из Node (для url.parse ). Если мне требуются webpack-env.d.ts и node.d.ts в одном и том же файле ссылок, как и ожидалось, он сломается, потому что Node переопределяет require . IOW, мне нужен доступ к node.d.ts «s url и модуль WebPack - х require определение.

Я могу обойти это, используя const url: any = require('url') , хотя это не идеально, и я хотел бы иметь типизацию для этого модуля. Другой вариант - разделить node.d.ts на составляющие модули и сделать так, чтобы главный node.d.ts требовал каждого отдельного модуля, хотя я не уверен, что это сломает что-нибудь у многих людей, которые полагаются на это. Файл объявления TypeScript - и я не особо хочу собирать его локально.

Какие-либо предложения?

Самый полезный комментарий

но что, если @types/node является зависимостью другой зависимости (например, fs-extra , jsdom , shelljs , tape )?
также удалили webpack-env и

if ((module as any).hot) {
...

😢

Все 6 Комментарий

Что ж, технически вы все еще не в среде узлов, и включать весь файл node.d.ts неправильно. Вы используете пакет npm, который действует так же, как "url" узла, но в среде браузера. Что вы можете сделать, так это извлечь эти типы из node.d.ts и создать отдельный url.d.ts, как вы уже предлагали. Простое разделение node.d.ts на более мелкие модули может не удовлетворить все потребности, потому что сигнатуры могут отличаться из-за различий в среде (буферы против массивов) или реализации. Я бы предложил независимую типизацию для этого пакета "url".

Я как бы столкнулся с той же проблемой, когда использую include typings/index.ts в моем tsconfig.json чтобы включить все типы ввода. При добавлении webpack-env.d.ts и node компилятор машинописного текста явно жалуется. Это можно обойти?

test_index.ts(1,28): error TS2339: Property 'context' does not exist on type 'NodeRequire'.

Я «решил» это с помощью создания отдельного файла типизации для модулей, специфичных для узла, которые я хотел использовать. К сожалению, это хитрость.

В итоге я полностью удалил webpack-env, так как для этого мне нужно было всего лишь один раз набрать текст во всем моем проекте. Надеюсь, так и будет. Я пробовал ваше решение, но мне действительно не нравится максимально загрязнять свои файлы ссылками. Спасибо за ответ

Саураб Шарма / Качественная инженерия
[email protected] / (925) -878-5722
Yammer, Microsoft
http://www.foklepoint.com

14 августа 2016 г. в 7:08 Дэн [email protected] написал:

Я «решил» это с помощью создания отдельного файла типизации для модулей, специфичных для узла, которые я хотел использовать. К сожалению, это хитрость.

-
Вы получили это, потому что прокомментировали.
Ответьте на это письмо напрямую, просмотрите его на GitHub или отключите обсуждение.

Конечно, я тоже :( Но, к сожалению, мне нужен был этот модуль. @Foklepoint

но что, если @types/node является зависимостью другой зависимости (например, fs-extra , jsdom , shelljs , tape )?
также удалили webpack-env и

if ((module as any).hot) {
...

😢

Была ли эта страница полезной?
0 / 5 - 0 рейтинги