При попытке преобразовать простой файл JS в TS с неявным «любой» отключен, я получаю эту ошибку:Как преобразовать новый синтаксис SomeFunction() в TypeScript?
error TS7009: 'new' expression, which lacks a constructor signature, implicitly has an 'any' type.
interface Logger {
new():any;
//():any; // "Callable" syntax. same error.
//new():LoggerInstance; //Same error.
}
interface LoggerInstance {
}
function Logger(): void {
}
var defaultLogger: LoggerInstance = new Logger();//error TS7009
//var defaultLogger: LoggerInstance = <any>new Logger();//same error
//var defaultLogger: LoggerInstance = <LoggerInstance >new Logger();//same error
Я не вижу, как сделать это без преобразования функции регистратора в класс.
Без каких-либо неявных отключений компилятор машинописного текста делал какие-либо предложения по улучшению, поэтому я хотел бы оставить эту настройку включенной.
Обновление: Если я удалю «новое» из интерфейса Logger, а затем произведу результат нового Logger (...), его можно скомпилировать в полном файле, но в моем более маленьком тестовом примере я продолжаю чтобы получить ту же ошибку.
Обновление 2 Хорошо, я думаю, что случается, что предупреждения об ошибках исчезают, когда плагин, который краснеет, подчеркивает синтаксические ошибки. Я думаю, что этот стиль создания объекта должен быть запрещен, если «неявный какой-либо» отключен.
Так почему бы не превратить его в к классу? – Nypan
Когда это класс, он становится IIFE, возвращая объект, а не «новую функцию», я не знаю, какое влияние это может иметь. Если компилятор скрипта типа требует в процессах аннотации, отбрасывая код и используя совершенно разные структуры, я мог бы также использовать CoffeeScript или Python или что у вас есть. – MatthewMartin
В чем разница между возвратом функции new'd и объектом? Я не понял вашего ответа Нипану. –