在 TypeScript 中,'export type' 和 'export declare type' 有什么区别
In TypeScript what is the difference between 'export type' and 'export declare type'
在 TypeScript 中,我认为 'declare' 提示编译器这是在其他地方创建的。这两种看似相同的“类型”实际上有何不同。是因为如果它在其他地方找不到它就使用当前的吗?
示例:
SomeTypes.ts
export type FooBarType = 'Foo' | 'Bar';
export declare type FooBarDeclareType = 'Foo' | 'Bar';
两者都有预期的 IDE 警告:
Type "This is not foo or Bar" is not assignable to type 'FooBarType'
进口SomeTypes.ts
const getFooOrBarType_expectedWarnings = (): FooBarType => 'This is not foo or Bar';
const getFooOrBarDeclareType_expectedWarnings = (): FooBarDeclareType => 'This is not foo or Bar';
foo 和 bar 都可以接受声明
const getFooOrBarType_bar = (): FooBarType => 'Bar';
const getFooOrBarDeclareType_bar = (): FooBarDeclareType => 'Bar';
const getFooOrBarType_foo = (): FooBarType => 'Foo';
const getFooOrBarDeclareType_foo = (): FooBarDeclareType => 'Foo';
绝对没有。 declare
只是声明您声明的成员处于环境上下文中。 “环境上下文”基本上只是意味着它对运行时无关紧要,它只是为了打字。因此,type
s 和 interface
s 已经在环境上下文中,所以它不会改变任何东西。
在 TypeScript 中,我认为 'declare' 提示编译器这是在其他地方创建的。这两种看似相同的“类型”实际上有何不同。是因为如果它在其他地方找不到它就使用当前的吗?
示例:
SomeTypes.ts
export type FooBarType = 'Foo' | 'Bar';
export declare type FooBarDeclareType = 'Foo' | 'Bar';
两者都有预期的 IDE 警告:
Type "This is not foo or Bar" is not assignable to type 'FooBarType'
进口SomeTypes.ts
const getFooOrBarType_expectedWarnings = (): FooBarType => 'This is not foo or Bar';
const getFooOrBarDeclareType_expectedWarnings = (): FooBarDeclareType => 'This is not foo or Bar';
foo 和 bar 都可以接受声明
const getFooOrBarType_bar = (): FooBarType => 'Bar';
const getFooOrBarDeclareType_bar = (): FooBarDeclareType => 'Bar';
const getFooOrBarType_foo = (): FooBarType => 'Foo';
const getFooOrBarDeclareType_foo = (): FooBarDeclareType => 'Foo';
绝对没有。 declare
只是声明您声明的成员处于环境上下文中。 “环境上下文”基本上只是意味着它对运行时无关紧要,它只是为了打字。因此,type
s 和 interface
s 已经在环境上下文中,所以它不会改变任何东西。