List
- 关于 Interface 与 Type
- 全局变量声明
关于 Interface 与 Type
Type aliases and interfaces are very similar, and in many cases you can choose between them freely. Almost all features of an interface are available in type, the key distinction is that a type cannot be re-opened to add new properties vs an interface which is always extendable.
// Extending an interfaceinterface Animal {name: string}interface Bear extends Animal {honey: boolean}const bear = getBear()bear.namebear.honey// Adding new fields to an existing interfaceinterface Window {title: string}interface Window {ts: TypeScriptAPI}const src = 'const a = "Hello World"';window.ts.transpileModule(src, {});
// Extending a type via intersectionstype Animal = {name: string}type Bear = Animal & {honey: Boolean}const bear = getBear();bear.name;bear.honey;// A type cannot be changed after being createdtype Window = {title: string}type Window = {ts: TypeScriptAPI}// Error: Duplicate identifier 'Window'.
参考链接
Typescript 中的 interface 和 type 到底有什么区别
全局变量声明
declare var chrome: any;
