Я пытаюсь объявить свойство в своем интерфейсе как
export interface GridColumn {
isRequired?: boolean | (row: any) => boolean
}
Я получаю сообщение об ошибке false is not assignable to type (row: any) => boolean
Может ли кто-нибудь исправить меня, если это неправильный способ объявления?
Заключите тип функции в круглые скобки: typescriptlang.org/play?#code/…. Обратите внимание, что это свойство будет очень раздражающим в использовании, вы будете постоянно проверять «нужно ли мне вызывать это или нет?»
Не делай этого. Я знаю, машинопись позволит вам, но просто не надо.
В этом случае необходимы скобки
export interface GridColumn {
isRequired?: boolean | ((row: any) => boolean)
}
const obj: GridColumn = { isRequired: true };
const obj2: GridColumn = { isRequired: () => true };
Я бы предложил написать вспомогательную функцию, когда вам нужно проверить это свойство, так как это может быть довольно хлопотно.
function isRequired(obj: GridColumn, row?: any): boolean {
return typeof obj.isRequired === "function" ? obj.isRequired(row) : obj.isRequired ?? false;
}
Спасибо, объявление с() сработало.
Какой код показывает эту ошибку? Конечно, не определение интерфейса.