关于类型收缩
摘取案例出处
类型断言
interface Foo {
bar: number;
bas: string;
}
const foo = {
} as Foo;
foo.bar = 123;
foo.bas = 'hello';
类型守卫
function doSome(x: number | string) {
if (typeof x === 'string') {
console.log(x.subtr(1));
console.log(x.substr(1));
}
x.substr(1);
}
class Foo {
foo = 123;
common = '123';
}
class Bar {
bar = 123;
common = '123';
}
function doStuff(arg: Foo | Bar) {
if (arg instanceof Foo) {
console.log(arg.foo);
console.log(arg.bar);
}else{
console.log(arg.foo);
console.log(arg.bar);
}
}
doStuff(new Foo());
interface A {
x: number;
}
interface B {
y: string