在Typescript中,类型和接口有什么区别?
2022-08-30 04:08:06
以下有什么区别?
type Foo = {
foo: string
};
interface Foo {
foo: string;
}
以下有什么区别?
type Foo = {
foo: string
};
interface Foo {
foo: string;
}
接口可以扩展
interface A {
x: number;
}
interface B extends A {
y: string;
}
以及增强
interface C {
m: boolean;
}
// ... later ...
interface C {
n: number;
}
但是,类型别名可以表示接口无法表示的某些内容
type NumOrStr = number | string;
type NeatAndCool = Neat & Cool;
type JustSomeOtherName = SomeType;
因此,一般来说,如果您只有一个普通的对象类型,如您的问题所示,则接口通常是更好的方法。如果你发现自己想写一些不能写成接口的东西,或者只想给一些东西一个不同的名称,那么类型别名会更好。
这些之间的差异也已经在这个线程中。
type Foo = {
foo: string
};
interface Foo {
foo: string;
}
这里看起来几乎相似,所以它令人困惑。type Foo
interface Foo
interface
是以下属性(此处)应存在于对象中的协定。 莫。当语言不支持多重继承时,将使用它。因此,可以是不同类之间的通用结构。foo:string
interface
class
interface
class Bar implements Foo {
foo: string;
}
let p: Foo = { foo: 'a string' };
但是,和 在非常不同的上下文中使用。type
interface
let foo: Foo;
let today: Date = new Date();
这里的 是 和 是 。它就像一个变量递减,它保存其他变量类型的信息。 就像接口,类,函数签名,其他类型甚至值(如)的超集。最后描述变量的可能结构或值。type
foo
Foo
today
Date
type
type mood = 'Good' | 'Bad'
type