@FoBoss98

Почему интерфейсы в TypeScript не работают?

Почему при всех включенных запретах("strict": true,"alwaysStrict": true) интерпретатор не выдает ни одной ошибки для следующего кода?

interface A
{
    a():string
}

function fooA(a : A)
{
    console.log(a.a());
}


class Aimpl
{
    a(): string {
        return "AB";
    }
}

fooA(new Aimpl);
  • Вопрос задан
  • 200 просмотров
Пригласить эксперта
Ответы на вопрос 1
Kozack
@Kozack
Thinking about a11y
Совместимость типов в TypeScript основывается на структурной типизации. Структурная типизация — это способ выявления отношений типов на основании исключительно состава их членов. Этот подход отличается от номинативной типизации. Посмотрим на следующий код:
interface Named {
    name: string;
}
 
class Person {
    name: string;
}
 
let p: Named;
// Все подходит, поскольку используется структурная система типов
p = new Person();


typescript-lang.ru/docs/Type%20Compatibility.html
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы