Ответ 1
Вы пропускаете скобки:
var value: string = dataObjects[i].getValue();
var id: number = dataObjects[i].getId();
Добрый день. Я новичок в типе Script, используя VSCode.
Получение следующих ошибок:
error TS2322: Type '() = > string' не присваивается типу 'string'.
error TS2322: Type '() = > number' не присваивается типу 'number'.
Код:
DTO.ts
interface DTO {
getId(): number;
getValue(): string;
}
export = DTO;
LinkedObject.ts
class LinkedObject {
public value: string = "Not Set";
public id: number = 0;
constructor(value?: string, id?: number) {
this.value = value;
this.id = id;
}
}
export = LinkedObject;
Я пытаюсь создать экземпляр класса LinkedObject
, используя вышеупомянутые методы интерфейса:
TravelClientFormPopulator.ts
class TravelClientFormPopulator {
public populateComboBoxUsingDTOs(dataObjects: Array<DTO>, comboBoxID: string): void {
// Get the combo box
var selectElement = <HTMLSelectElement> document.getElementById(comboBoxID);
// Reset the options
selectElement.options.length = 0;
var linkedObjectsToAdd: LinkedObject[] = new Array<LinkedObject>();
var defaultLinkedObject: LinkedObject = new LinkedObject("Not Selected", 0);
linkedObjectsToAdd.push(defaultLinkedObject);
for (var i = 0; i < dataObjects.length; i++) {
var value: string = dataObjects[i].getValue; // Error here
var id: number = dataObjects[i].getId; // And here
var linkedObject: LinkedObject = new LinkedObject(value, id);
}
}
}
Любая помощь будет высоко оценена.
Вы пропускаете скобки:
var value: string = dataObjects[i].getValue();
var id: number = dataObjects[i].getId();
Для чего стоит, если у кого-то есть эта проблема только в VSCode, просто перезапустите VSCode, и он должен ее исправить. Иногда Intellisense, похоже, испортит импорт или типы.
Относится к Typescript: Аргумент типа 'RegExpMatchArray' не присваивается параметру типа 'string'
Также добавление других сценариев, где вы можете увидеть эти ошибки
Сначала проверьте версию компилятора, Загрузите последний компилятор Typescriptдля поддержки синтаксиса ES6
typescript все еще производит вывод даже при ошибках ввода, это не фактически блокировать разработку,
Когда вы видите эти ошибки Проверьте синтаксис при инициализации или при вызове этих методов или переменных,
Проверьте, не являются ли параметры функций неправильными данными. Тип, который вы инициализировали как "строка" и присвоили "логическое" или "число"
Пример
1.
private errors: string;
//somewhere in code you assign a boolean value to (string)'errors'
this.errors=true
or
this.error=5
2.
private values: Array<number>;
this.values.push(value); //Argument of type 'X' is not assignable to parameter of type 'X'
Сообщение об ошибке здесь объясняется тем, что квадратные скобки для инициализации массива отсутствуют, он работает даже без него, но VS предупреждает о красных предупреждениях.
private values: Array<number> = [];
this.values.push(value);
Примечание:
Помните, что Javascript выводит тип в соответствии с назначенным значением, So Typescript уведомляет их, но код выполняется даже с этими ошибками, выделенными в VS Code
Пример:
var a=2;
typeof(a) // "number"
var a='Ignatius';
typeof(a) // "string"
Я делаю angular 2 и typescript, и я не понимал, что у меня есть пробел в обозначении стрелки
У меня было .map(key = >
вместо .map(key =>
Определенно держите глаза открытыми для глупых синтаксических ошибок
В моем случае это был пользовательский интерфейс Item, но я случайно импортировал его из-за автозаполнения, углового класса Item. Убедитесь, что вы импортируете из нужной упаковки.
В моем случае, как ни странно, мне не хватало импорта класса, на которого он жаловался, и моя IDE не обнаружила его.
Эта проблема в основном возникает, когда ваш компилятор не может понять разницу между оператором приведения типа string к Number.
Вы можете использовать объект Number и передать свое значение, чтобы получить соответствующие результаты для него, используя Number (<<<<... Variable_Name...... >>>>)
Вы просто используете переменную любого типа и устраняете эти типы проблем.
код ошибки:
let accessToken = res;
localStorage.setItem(LocalStorageConstants.TOKEN_KEY, accessToken);
данная ошибка Аргумент типа '{}' не может быть назначен параметру типа 'string'.
Код успеха:
var accessToken:any = res;
localStorage.setItem(LocalStorageConstants.TOKEN_KEY, accessToken);
мы создаем переменную типа var, затем используем переменную типа any и решаем эту проблему.
any = обрабатывать любой тип значения, чтобы устранить ошибку.