Проблема с корнем заключается в том, что вам нужно преобразовать массив в список, верно? Вы можете сделать это, используя определенный тип (TimePeriod вместо T) и следующий код.
Поэтому используйте что-то вроде этого:
List<TimePeriod> list = new ArrayList<TimePeriod>();
list.addAll(Arrays.asList(sizes));
Теперь вы можете передать список в любой метод, который хочет список.
Если у вас есть только один файл, использующий require, или вы делаете это для демонстрационных целей, вы можете определить require в верхней части вашего файла TypeScript.
declare var require: any
Если вы используете TypeScript 2.x, вам больше не нужно устанавливать типизированные или однозначно набранные. Просто установите следующий пакет.
npm install @types/node --save-dev
Файлы будущего декларации (15.06.2016)
Такие инструменты, как Typings и TSD, будут продолжать работать, и мы будем работать вместе эти общины, чтобы обеспечить плавный переход.
ДОПОЛНИТЕЛЬНО: Если вы указываете typeroots
или types
в своем tsconfig.json
. Возможно, вам придется обновить tsconfig.json
, чтобы включить узел в качестве типа. По умолчанию любой пакет в @types уже включен в вашу сборку , если вы не указали ни одну из этих опций. Подробнее
Ниже приведена правильная конфигурация для каждого из этих параметров.
{
"compilerOptions": {
// types option has been previously configured
"types": [
// add node as an option
"node"
],
// typeRoots option has been previously configured
"typeRoots": [
// add path to @types
"node_modules/@types"
]
}
}
Используя наборы (замена DefiniteTyped), вы можете указать определение непосредственно из репозитория GitHub.
Установить наборы
npm install typings -g --save-dev
Установить определение типа requireJS из репозитория DefintelyType
typings install dt~node --save --global
Если вы используете Webpack в качестве инструмента сборки, вы можете включить типы веб-пакетов.
npm install --save-dev @ types / webpack-env
Обновите свой tsconfig.json
следующим образом в compilerOptions
:
"types": [
"webpack-env"
]
Это позволяет вам сделать require.ensure
и другие специальные функции Webpack.
С помощью CLI вы можете выполнить вышеуказанный шаг Webpack и добавить блок «types» в свой tsconfig.app.json
.
В качестве альтернативы, вы можете использовать предустановленные node
типы. Имейте в виду, что в ваш клиентский код будут включены дополнительные типы, которые на самом деле недоступны.
"compilerOptions": {
// other options
"types": [
"node"
]
}
Если вы столкнулись с этой проблемой в файле ts, в котором есть только некоторые постоянные значения, вы можете просто
переименовать файл .ts в файл .js
и ошибка больше не возникнет.
У меня есть еще один ответ, который основывается на всех предыдущих, которые описывают npm install @types/node
и в том числе node
в tsconfig.json / compilerOptions / types
.
В моем случае у меня есть база tsConfig.json
и отдельная в приложении Angular, расширяющая эту:
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"outDir": "../out-tsc/app",
"types": []
},
Моя проблема была пустой types
в этом tsconfi.app.json
- это забивает тот, что в базовой конфигурации.
Я не мог заставить ошибку 'require' уйти, используя любой из вышеперечисленных приемов.
но я обнаружил, что проблема заключалась в том, что мои инструменты машинописи для Visual Studio, где старая версия (1.8.6.0) и последняя версия на сегодняшний день (2.0.6.0)
Вы можете скачать последняя версия инструментов:
https://www.microsoft.com/en-us/download/details.aspx?id=48593
Электрон + угловое добавление 2/4. Помимо добавления типа 'node' к различным файлам ts.config, в конечном итоге мне удалось добавить следующее к файлу typings.d.ts:
declare var window: Window;
interface Window {
process: any;
require: any;
}
Обратите внимание, что мой случай развивается с электронным + угловым 2/4. Мне нужно было запросить глобальное окно.
Убедитесь, что вы установили npm i @types/node
Просто для справки, я использую Angular 7.1.4 , машинописный текст 3.1.6 , и единственное, что мне нужно сделать, это добавить эту строку в tsconfig.json
"types": ["node"], // within compilerOptions
Надеюсь, это поможет.
Вместо:
'use strict';
/// <reference path="typings/tsd.d.ts" />
Попробуйте:
/// <reference path="typings/tsd.d.ts" />
'use strict';
, т.е. первый путь ссылки.
Этот ответ относится к современным настройкам (машинописный текст 2.x, веб-пакет> 2.x)
вам НЕ нужно устанавливать @ types / node (который является узлом .js вводит и не имеет отношения к внешнему коду, фактически усложняя такие вещи, как setTimout, различное возвращаемое значение и т. д.
вам НЕОБХОДИМО установить @ types / webpack-env
npm i -D @types/webpack-env
, который выдает сигнатуры времени выполнения, которые есть у веб-пакета (включая require и require.ensure и т. Д.)
также убедитесь, что ваш tsconfig.json не имеет установленного массива 'types' ->, который будет сделайте так, чтобы он принимал все определения типов в вашей папке node_modules / @ types. Если вы хотите ограничить поиск типов, вы можете установить для свойства typeRoot значение node_modules / @ types
Иногда может отсутствовать «jasmine» из tsconfig.json, что может привести к этой ошибке. (Typescript 2.X)
, поэтому добавьте
"types": [
"node",
"jasmine"
]
в свой файл tsconfig.json
Я обнаружил, что решение состояло в том, чтобы использовать команду TSD:
tsd install node --save
, которая добавляет / обновляет файл typings/tsd.d.ts
, и этот файл содержит все определения типов, которые требуются для приложения узла.
В верхней части моего файла я поместил ссылку на tsd.d.ts
следующим образом:
/// <reference path="../typings/tsd.d.ts" />
Потребность определяется следующим образом по состоянию на январь 2016 года:
declare var require: NodeRequire;
interface NodeModule {
exports: any;
require: NodeRequireFunction;
id: string;
filename: string;
loaded: boolean;
parent: any;
children: any[];
}
Вы можете
declare var require: any
Или, для более всесторонней поддержки, использовать DefinitiveTyped's require.d.ts
Также, вместо var mongoose = require('mongoose')
, вы можете попробуйте следующее
import mongoose from 'mongoose' // or
import mongoose = require('mongoose')
Добавить следующее в tsconfig.json
:
"typeRoots": [ "../node_modules/@types" ]
Если вы можете скомпилировать код, но Visual Studio 2015 помечает функции 'require' как ошибки с текстом ошибки не может найти имя 'require' или не может найти символ 'require' обновляет TypeScript для Visual Studio 2015 до последней версии (на данный момент 2.1.5) и обновите ReSharper (если вы его используете) как минимум до версии 2016.3.2.
У меня была эта досадная проблема некоторое время, я не мог найти решение, но наконец решил ее таким образом. Надеюсь, это кому-нибудь поможет.
Просто в дополнение к ответу cgatian, для TypeScript 1.x
Если вы все еще видите ошибки, пожалуйста, конкретно укажите index.d.ts в опциях вашего компилятора.
"files": [
"typings/index.d.ts"
]
Вы указали, какой модуль использовать для переноса кода?
tsc --target es5 --module commonjs script.ts
Вы должны сделать это, чтобы транспортер знал, что вы компилируете Код NodeJS. Документы .
Вы также должны установить определения мангуста
tsd install mongoose --save
Не используйте var
для объявления переменных (если не требуется, что является очень редкий случай), используйте вместо этого let
. Узнайте больше об этом
core-js
как зависимость npm в package.json
typings install core-js --save
"es6-shim"
вхождения в вашем package.json
. Вам это больше не нужно. Ура!
Для TypeScript 2.x теперь есть два шага:
Установите пакет, который определяет require
. Например:
npm install @types/node --save-dev
Скажите TypeScript включить его глобально в tsconfig.json
:
{
"compilerOptions": {
"types": ["node"]
}
}
Второй шаг важен только если вам нужен доступ к глобально доступным функциям, таким как require
. Для большинства пакетов вы должны просто использовать шаблон import package from 'package'
. Нет необходимости включать каждый пакет в массив типов tsconfig.json выше.
Я взял ответ Питера Варги , чтобы добавить declare var require: any;
, и превратил его в универсальное решение, которое работает для всех файлов .ts в общем, используя preprocess-loader :
установить загрузчик препроцессора:
npm install preprocessor-loader
добавить загрузчик в ваш webpack.config.js (я использую TS-загрузчик для обработки источников TypeScript):
module: {
loaders: [{
test: /\.tsx?$/,
loader: 'ts-loader!preprocessor?file&config=preprocess-ts.json'
}]
}
{
"line": false,
"file": true,
"callbacks": [{
"fileName": "all",
"scope": "source",
"callback": "(function shimRequire(source, fileName) { return 'declare var require: any;' + source; })"
}]
}
Вы можете добавить более надежный require.d.ts таким же образом, но declare var require: any;
было достаточно в моей ситуации.
Обратите внимание, есть ошибка в препроцессоре 1.0.5 , которая обрезает последнюю строку, поэтому просто убедитесь, что у вас есть дополнительный пробел в конце, и все будет в порядке.
В моем случае это была супер глупая проблема, где эти src/tsconfig.app.json
переопределял tsconfig.json
установка.
Так, у меня было это в tsconfig.json
:
"types": [
"node"
]
И этот в src/tsconfig.app.json
:
"types": []
я надеюсь, что кто-то находит это полезным, поскольку эта ошибка вызывала меня седые волосы.