打字稿文件中的外部 jQuery 库

External jQuery Library in typescript file

我正在开发一个 Asp.net MVC 项目,其中包含 Smartadmin 主题和带有 JQuery 打字的 Typescript,用于 Dom 操作,有一个名为 SmartMessageBox 的 jquery 库用于提示消息,有没有一种简单的方法可以在我的打字稿文件中使用这个库,因为我得到了 错误 Build:Property 'SmartMessageBox' 在类型 'JQueryStatic'

上不存在

如果消息框只在一个文件中使用,最简单的解决办法是在文件顶部添加这样的内容:

declare const jQuery: JQueryStatic & {
    // *** Choose one of the following ***
    // Most basic:
    SmartMessageBox: any;
    // Better (assuming SmartMessageBox is a function):
    SmartMessageBox(/*param type info*/): /*return type or void*/;
};

这表示 jQuery 是一个全局对象,其类型是接口 JQueryStaticunion 和描述 SmartMessageBox.

的接口

如果消息框或其他 "smart admin" 类型在多个文件中使用 ,您应该考虑编写一个 .d.ts 文件。 official documentation and the default jQuery .d.ts file 应该有助于弄清楚要做什么。将文件保存在 <project root>/typings/smart-admin/index.d.ts 下,并在 tsconfig.json 中添加以下内容:

{
    "compilerOptions": {
        "typeRoots": ["./node_modules/@types", "./typings"]
    }
}

这告诉编译器在 ./typings./node_modules/@types 下查找类型定义(从 npm 安装的 @types 包的默认位置)。

您必须为 SmartMessageBox 创建一个 d.ts 文件。 https://www.typescriptlang.org/docs/handbook/declaration-files/introduction.html