我正在使用带有cli的Vue.js并在Typescript上启动项目。除了必须使用js库的情况外,我没有任何问题。我知道这个https://github.com/DefinitelyTyped/DefinitelyTyped,我尽可能地使用它。但是当js库是新的,旧的或不受欢迎的并且没有类型定义时,存在一个大问题。我花了很多时间寻找解决方案,似乎只有很少的选择:
在我的情况下,第一个选项不可用。第二 - 非常依赖于库,它可能有难以声明的结构。 那么,如果我想要导入js库,我能做什么呢? 我试过这些方法:
import { } from 'velocity-animate';
import Velocity from 'velocity-animate';
import { Velocity } from 'velocity-animate';
import Velocity from '../../node_modules/velocity-animate';
import * as Velocity from 'velocity-animate';
const Velocity = require('velocity-animate');
const Velocity: any = require('velocity-animate');
const Velocity = require('../../node_modules/velocity-animate/velocity.js');
另外,尝试使用上面的导入添加不同的变体和组合,如:
declare var Velocity: any;
declare module 'velocity-animate';
等。没有,我只是在控制台中有错误:
未捕获的ReferenceError:未定义速度
这不是我在代码中的拼写错误,在常规js中相同的代码工作正常,即 https://codepen.io/anon/pen/YLBZMd
另一个我的怀疑是tscompiler和他的规则/设置。这是我的:
{
"compilerOptions": {
"target": "es2015",
"module": "es2015",
"strict": true,
"allowJs": true,
"jsx": "preserve",
"moduleResolution": "node",
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"allowSyntheticDefaultImports": true,
"sourceMap": true,
"baseUrl": ".",
"noImplicitAny": false,
"types": [
"node",
"googlemaps"
],
"paths": {
"@/*": [
"src/*"
]
}
},
"include": [
"src/**/*.ts",
"src/**/*.vue",
"tests/**/*.ts"
],
"exclude": [
"node_modules"
]
}
有人可以解释一下我做错了什么吗?为什么如此简单的事情会导致如此大的问题?
答案 0 :(得分:0)
未捕获的ReferenceError:未定义速度
这是运行时错误,而不是编译时打字稿错误。
确保script
全球可用。例如在运行应用程序代码之前,将https://raw.githubusercontent.com/julianshapiro/velocity/master/velocity.min.js添加为=IF(Sheet7!$K2=TRUE,QUERY(Sheet7!$P2:$X2),
IF(Sheet7!$L2=TRUE,QUERY(Sheet7!$Z2:$AH2),
IF(Sheet7!$M2=TRUE,QUERY(Sheet7!$AJ2:$AR2),
IF(Sheet7!$N2=TRUE, QUERY(Sheet7!$AT2:$BB2), "ERROR"))))
标记。