Я использую библиотеку Q
в сценарии, который я хотел бы запустить в веб-рабочем и в узле. Если я ссылаться q.d.ts
так:Использование .d.ts. файлы для JS, предназначенные для узла и веб-рабочего
/// <reference path="../typings/q/Q.d.ts" />
if(importScripts != undefined && WorkerGlobalScope == undefined
&& typeof module !== 'undefined' && module.exports){
// We're in a Node (child) process
var Q = require("q")
}else{
// We're in a web-worker
importScripts('q');
}
Я получаю следующее сообщение об ошибке, которое хорошо объясняется в этом answer:
error TS2300: Duplicate identifier 'Q'.
, но если я заменяю var Q = require("q")
с import Q = require("q")
, я получаю эту ошибку, потому что импорт вложен в предложение if
, а не на верхнем уровне сценария:
Есть ли способ потребовать Q
так, чтобы он работал с обоими require()
и веб-работником importScripts()
?
Это прекрасно работает, когда '.d.ts' файл объявляет модуль, но и для тех, что дон» t, например ['require.d.ts'] (https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/q/Qdts),' import _r = require ('requirejs') 'приводит к этому ошибка: 'Не могу найти модуль 'requirejs'.' – Jthorpe
У меня есть [другой связанный вопрос] (http://stackoverflow.com/questions/38016793), что было бы здорово, если бы вы могли взглянуть на него. Благодаря! – Jthorpe