由于slug模块缺少官方d.ts文件,因此尝试使用它会出现各种错误。
首先,这是导入模块的文件。
import * as slug from "slug" // Had to create a custom d.ts empty file to avoid compile error as no official definition file existed
let slugify = function (data: string): string {
let slugified: string = slug('ééé aaa ooo') // error here
return slugified
}
export default slugify
这是我必须创建的空d.ts文件,以防止编译器输入错误消息:
declare module "slug" {
}
新问题出现在slug('éééaaooo')上:
error TS2349: Cannot invoke an expression whose type lacks a call signature.
我该如何解决这个问题?我应该在d.ts文件中添加“假”内容吗?
答案 0 :(得分:1)
编译器需要知道slug是如何工作的,你可以通过从定义文件中的模块导出该函数的声明(表示slug在JavaScript中的外观)来让它知道。
这是一种方法:
declare module "slug" {
interface SlugOptions {
lower?: boolean;
// ...add the other options here...
}
function slug(val: string, optionsOrReplacement?: SlugOptions | string): string;
export = slug;
}
我认为导入此库的唯一方法是使用require
,因为doesn't use是js代码中的命名/默认导出:
import slug = require("slug");