0%

声明空间

在TypeScript中存在两种声明空间:类型声明空间和变量声明空间

类型声明空间

类型声明空间包含用来当做类型注解的内容,例如下面的类型声明:

1
2
3
class Foo{}
interface Bar{}
type Bas = {}

你可以将Foo,Bar,Bas作为类型注解使用:

1
2
3
let foo: Foo;
let bar: Bar;
let bas: Bas;

尽管你定义了interface Bar,却不能把它作为一个变量使用,因为它没有定义在变量声明空间中。

变量声明空间

变量声明空间包含可用作变量的内容,在上文中Class Foo提供了一个类型Foo到类型声明空间,此外它同样提供了一个变量Foo到变量声明空间

1
2
3
class Foo {}
const someVar = Foo;
const someOtherVar = 123

一些用var声明的变量,也只能在变量声明空间中使用,不能用作类型注解

1
2
const foo = 123;
let bar: foo;//ERROR:"cannot find name 'foo'"