Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TypeScript-类型交叉点&;这个关键词_Types_Typescript - Fatal编程技术网

TypeScript-类型交叉点&;这个关键词

TypeScript-类型交叉点&;这个关键词,types,typescript,Types,Typescript,以下两者之间的区别是什么: interface MyType { f<T>(other: T): this & T; } 接口MyType{ f(其他:T):本&T; } 及 接口MyType{ f(其他:T):MyType&T; } ?此类型取决于实现类,因此给出第一个定义后,将进行以下类型检查: class Foo implements MyType { f<T>(other: T): T & this { ... } g

以下两者之间的区别是什么:

interface MyType {
    f<T>(other: T): this & T;
}
接口MyType{
f(其他:T):本&T;
}

接口MyType{
f(其他:T):MyType&T;
}

类型取决于实现类,因此给出第一个定义后,将进行以下类型检查:

class Foo implements MyType {
    f<T>(other: T): T & this { ... }
    g(): string { return "only in foo"; }
}

var foo: Foo
var ff = foo.f("dsklf");
var s: string = ff.g();
类Foo实现MyType{
f(其他:T):T&这个{…}
g():字符串{return“仅在foo中”;}
}
变量foo:foo
var ff=foo.f(“dsklf”);
var s:string=ff.g();
由于
ff
具有类型
Foo&string
,因此是
Foo
的子类型

鉴于
MyType
的第二个定义,
ff.g()
将不会进行类型检查,因为
g
未在
MyType&string
上定义

class Foo implements MyType {
    f<T>(other: T): T & this { ... }
    g(): string { return "only in foo"; }
}

var foo: Foo
var ff = foo.f("dsklf");
var s: string = ff.g();