Alk*_*Alk 5 types intersection typescript typescript-generics
我正在尝试更好地理解 Typescript 接口。
我定义了以下接口:
interface Bob<T> {
x : number;
y : string;
z? : T;
}
interface Jennie<T> {
x : number;
y : number;
q : number;
z? : T;
}
Run Code Online (Sandbox Code Playgroud)
接下来我创建了这个变量:
let myIntersection : Bob<string> & Jennie<number> = {
x: 20, y: 'hi', q: 30, z: 20
}
console.log(myIntersection);
Run Code Online (Sandbox Code Playgroud)
这会引发错误:
solution.ts:3:3
3 y : string;
~
The expected type comes from property 'y' which is declared here on type 'Bob<string> & Jennie<number>'solution.ts:49:24 - error TS2322: Type 'number' is not assignable to type 'never'.
Run Code Online (Sandbox Code Playgroud)
我理解原则上的想法是,&将结合两者的属性Bob并创建一种新类型,Jennie因此如果Bob具有属性x,y并且Jennie具有属性a,b-Bob & Jennie将具有x,,,,-但是在更复杂的情况下,如上面我们有:yab
Bob和中定义了相同的属性,Jennie但类型不同 ( y)z的可选属性stringBobnumberJennie在这种情况下是否遵循一些一般规则,或者我的代码无效?
| 归档时间: |
|
| 查看次数: |
857 次 |
| 最近记录: |