【发布时间】:2019-07-05 03:54:13
【问题描述】:
我使用的是Typescript 3.2.2,无法实现最基本的类型保护实现:
interface Bird {
fly(): boolean;
}
interface Fish {
swim(): boolean;
}
function swimIfYouCan(x: Fish | Bird) {
if ((<Fish>x).swim) {
return true
}
}
这会在 WebStorm 中生成 Error:(50, 11) TS2693: 'Fish' only refers to a type, but is being used as a value here.,从 yarn 生成 SyntaxError: /Users/sea-kent/git/docket-management/webapp/src/App.tsx: Unexpected token (51:8)。启用此语法是否需要配置?
【问题讨论】:
-
如果您使用的是 TSX,
<Fish>可能是一个元素 - 请改用x as Fish。参见例如stackoverflow.com/a/54614279/3001761, typescriptlang.org/docs/handbook/jsx.html -
@jonrsharpe 就是这样,谢谢
标签: typescript