Ошибка Typescript «padStart» при попытке поместить объект в массив

#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