#typescript
Вопрос:
Я изучаю машинопись, и я получил эту ошибку Generic type 'BallInterface' requires 2 type argument(s)
в теннисном мяче. Как я могу вызвать функцию, объект параметра которой имеет более одного универсального типа? Почему он выдает ошибку? Весь код:
const addId = <T extends object>(obj: T) =>{
const id = 3;
return {
...obj,
id
}
}
interface BallInterface<T, V>{
name: string
data: T
meta: V
}
const ball: BallInterface<{meta: string}, string> = {
name: "Tennis",
data:{meta: "for playing"},
meta: "Mario"
}
const tennisBall = addId<BallInterface>(ball);
Ответ №1:
Это вызывает ошибку, потому что вы определили BallInterface
интерфейс как интерфейс, который имеет два универсальных интерфейса.
В последней строке вы называете addId
, что вы передаете BallInterface
как универсальный, не указывая, каким будет T
и V
какой будет BallInterface.
Не совсем ясно, какова ваша цель здесь. Если все, чего вы хотите добиться, — это добавить Id
поле, вам вообще не нужно передавать общее addId
значение. Вы делаете это сложнее, чем есть на самом деле 🙂
const addId = (obj: object) =>{
const id = 3;
return {
...obj,
id
}
}
interface BallInterface<T, V>{
name: string
data: T
meta: V
}
const ball: BallInterface<{meta: string}, string> = {
name: "Tennis",
data:{meta: "for playing"},
meta: "Mario"
}
const tennisBall = addId(ball);
Комментарии:
1. Спасибо за ваш ответ, теперь он не выдает ошибку. Но все равно я не мог хорошо понять, я сделал другой интерфейс, в котором я поместил только один универсальный, и там, когда я вызвал addId, как этот addId<BallInterface>(мяч); он не выдает ошибку.