Skip to content
On this page

공변성 vs 반공변성

Title
공변성 vs 반공변성
Category
TypeScript
Tags
Aliases
공변성 vs 반공변성covariant vs contravariant
Created
2 years ago
Updated
last year
ts
declare let foo: {a: number};
declare let bar: {a: number; b: string};

foo = bar;
bar = foo; // error! 서브타입에 슈퍼타입을 대입할 수 없다.
declare let foo: {a: number};
declare let bar: {a: number; b: string};

foo = bar;
bar = foo; // error! 서브타입에 슈퍼타입을 대입할 수 없다.
ts
declare let foo: (a: number) => void;
declare let bar: (a: number, b: string) => void;

foo = bar; // error! a만 인자로 받는 foo에 a, b를 처리하는 bar를 대입할 수 없다.
bar = foo;
declare let foo: (a: number) => void;
declare let bar: (a: number, b: string) => void;

foo = bar; // error! a만 인자로 받는 foo에 a, b를 처리하는 bar를 대입할 수 없다.
bar = foo;

References

Released under the MIT License.