为什么TypeScript找不到定义的常量?

时间:2017-10-24 13:07:09

标签: typescript

我有一个这样简单的部分:

.select2-selection--multiple:after{
 content:"";
 position:absolute;
 right:10px;
 top:15px;
 width:0;
 height:0;
 border-left: 5px solid transparent;
 border-right: 5px solid transparent;
 border-top: 5px solid #888;
}

TypeScript Playground中,它显示了一个错误,它无法找到const getMethod = 'get'; const postMethod = 'post'; export type RequestMethod = getMethod | postMethod; getMethod常量,但在右侧显示已编译的版本。

这段代码有什么问题?我之前习惯使用它,但现在它显示错误。

以下是错误的屏幕截图:

error

3 个答案:

答案 0 :(得分:1)

根据spec,联合类型是两种类型的联合。常量不是类型。字符串文字是类型,同样根据spec,这就是你可以写'get'|的原因'POST'。

您可以使用常量的类型,它将是字符串文字类型:

const getMethod = 'get';
const postMethod = 'post';

export type RequestMethod = typeof getMethod | typeof postMethod;

答案 1 :(得分:0)

这是因为你试图将常量用作类型。

如果您希望RequestMethod成为联合类型,则必须将getMethodpostMethod定义为类型。

type getMethod = 'get';
type postMethod = 'post';

export type RequestMethod = getMethod | postMethod;

答案 2 :(得分:0)

getMethod应该是type | interface | enum,而不是变量。

您可以尝试:

type getMethod = 'get';
type postMethod = 'post';

export type RequestMethod = getMethod | postMethod;

enum RequestMethod { 
    GET = 'get',
    POST = 'post' 
}

const getMethod = RequestMethod.GET;

function makeRequest(method: RequestMethod) {

}