Я новичок в TypeScript, и мне не удалось назначить интерфейс.
У меня есть такой массив:
const data = [{ size: 1, count: 3, normal: 'one' }, { ... }]
, который я передаю функции, поэтому я может отображать данные в представлении HTML. Я создал интерфейс для объектов, чтобы убедиться, что свойства имеют правильный тип:
function getWebviewContent(data: object[]) {
interface Properties {
normal: string
count: number
}
return `<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Cat Coding</title>
</head>
<body>
<ul>
${data.map((item: Properties) => `
<li>${item.normal} ${item.count}</li>
`).join('')}
<ul>
</body>
</html>`
}
Однако TypeScript / TSLint выдает эту ошибку:
Argument of type '(item: Properties) => string' is not assignable to parameter of type '(value: object, index: number, array: object[]) => string'.
Types of parameters 'item' and 'value' are incompatible.
Type '{}' is missing the following properties from type 'Properties': normal, count
Почему это так и как это исправить?