#javascript #reactjs #typescript
#javascript #reactjs #typescript
Вопрос:
Я объявляю шаблон объекта, который я заполняю данными:
let dataTemplate = {
publishedDate: "",
Url: "",
Title: "",
}
dataTemplate.publishedDate = xml.children[4].children[i].children[13].value;
dataTemplate.Url = xml.children[4].children[i].children[16].value;
dataTemplate.Title = xml.children[4].children[i].children[58].value;
Затем я объявляю строковый массив и пытаюсь поместить указанный выше объект в массив:
let data: String[] = [];
data.push(dataTemplate);
Но я получаю синтаксическую ошибку в «DataTemplate» в следующей строке:
data.push(dataTemplate);
[ts]
Argument of type '{ publishedDate: string; Url: string; Title: string; }' is not assignable to parameter of type 'String'.
Property 'padStart' is missing in type '{ publishedDate: string; Url: string; Title: string; }'.
Почему? Я использую TS 3.3 и не могу выполнить обновление (MS SPFx не поддерживает более новые версии.
Комментарии:
1. почему вы пытаетесь поместить объект в строковый массив? Строковый массив может содержать только строки.
Ответ №1:
/**
* First of all, define type for templateData
*/
type Template = {
publishedDate: string;
Url: string;
Title: string;
}
let dataTemplate: Template = {
publishedDate: "",
Url: "",
Title: "",
}
/**
* Wrong. because TS expects array of string, and you are going to use here array of Template
*/
let data: String[] = [];// not ok
// Ok
let data1: Template[] = [];
data1.push(dataTemplate); // works as expected