TypeScript не заботится об именах типов (или псевдонимах), а только о форме типа. Оба типа first
и second
одинаковы для компилятора, но вы не получите ошибку.
Фактически, из-за Структурной типизации этот код также будет работать:
interface I1 {
name: string;
age: number;
}
interface I2 {
age: number;
name: string;
}
var a1: I1;
var a2: I2;
function log(arg1: I1, arg2: I2): void {
console.log(arg1, arg2);
}
log(a2, a1);
потому что I1
и I2
также являются псевдонимами одного и того же типа (оба интерфейса имеют одинаковые свойства с одинаковыми типами)