javascript - 如何将 jquery 类型导入打字稿
问题描述
我意识到对此有多个问题,但我在寻找与我匹配的问题时遇到问题,也许有人可以指出我正确的方向。
在我的 Visual Studio 项目中,我使用 package.json 将 jquery 类型下载到 node_modules 文件夹中:
{
"version": "1.0.0",
"name": "asp.net",
"private": true,
"devDependencies": {
"@syncfusion/ej2": "17.1.51",
"@syncfusion/ej2-base": "17.1.49",
"@syncfusion/ej2-data": "17.1.51",
"@syncfusion/ej2-inputs": "17.1.50",
"@syncfusion/ej2-buttons": "17.1.50",
"@syncfusion/ej2-splitbuttons": "17.1.51",
"@syncfusion/ej2-lists": "17.1.47",
"@syncfusion/ej2-navigations": "17.1.49",
"@syncfusion/ej2-popups": "17.1.50",
"@syncfusion/ej2-charts": "17.1.51",
"@syncfusion/ej2-calendars": "17.1.51",
"@syncfusion/ej2-grids": "17.1.51",
"@syncfusion/ej2-maps": "17.1.51",
"@syncfusion/ej2-pdf-export": "17.1.48",
"@syncfusion/ej2-svg-base": "17.1.48",
"@syncfusion/ej2-file-utils": "17.1.47",
"@syncfusion/ej2-compression": "17.1.47",
"@types/jquery": "3.2.0"
}
}
实际项目已经使用 jquery 2.1.4,但我认为如果我得到 3.2.0 应该不是什么大问题,因为没有可用的 2.1.4,类型版本是否与 jquery 相关脚本版本?
我的 tsconfig.json 有以下内容:
{
"compilerOptions": {
"noImplicitAny": false,
"noEmitOnError": true,
"removeComments": false,
"sourceMap": true,
"target": "es2015",
"module": "commonjs",
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"baseUrl": "./",
"paths": {
"@syncfusion/ej2-base": [ "./node_modules/@syncfusion/ej2-base/dist/ej2-base.umd.min.js" ],
"@syncfusion/ej2-buttons": [ "./node_modules/@syncfusion/ej2-buttons/dist/ej2-buttons.umd.min.js" ],
"@syncfusion/ej2-popups": [ "./node_modules/@syncfusion/ej2-popups/dist/ej2-popups.umd.min.js" ],
"@syncfusion/ej2-maps": [ "./node_modules/@syncfusion/ej2-maps/dist/ej2-maps.umd.min.js" ],
"@types/jquery": [ "./node_modules/@types/jquery/index.d.ts" ]
}
},
"exclude": [
"wwwroot"
]
}
我的页面 QBMapByState.aspx 有以下 javascript 文件 QBMapByState.config.js:
System.config({
paths: {
'npm:': './node_modules/',
'syncfusion:': '../node_modules/@syncfusion/',
'types:': '../node_modules/@types/'
},
map: {
app: '../scripts/QBMapping',
//Syncfusion packages mapping
"@syncfusion/ej2-base": "syncfusion:ej2-base/dist/ej2-base.umd.min.js",
"@syncfusion/ej2-data": "syncfusion:ej2-data/dist/ej2-data.umd.min.js",
"@syncfusion/ej2-inputs": "syncfusion:ej2-inputs/dist/ej2-inputs.umd.min.js",
"@syncfusion/ej2-buttons": "syncfusion:ej2-buttons/dist/ej2-buttons.umd.min.js",
"@syncfusion/ej2-splitbuttons": "syncfusion:ej2-splitbuttons/dist/ej2-splitbuttons.umd.min.js",
"@syncfusion/ej2-lists": "syncfusion:ej2-lists/dist/ej2-lists.umd.min.js",
"@syncfusion/ej2-navigations": "syncfusion:ej2-navigations/dist/ej2-navigations.umd.min.js",
"@syncfusion/ej2-popups": "syncfusion:ej2-popups/dist/ej2-popups.umd.min.js",
"@syncfusion/ej2-charts": "syncfusion:ej2-charts/dist/ej2-charts.umd.min.js",
"@syncfusion/ej2-calendars": "syncfusion:ej2-calendars/dist/ej2-calendars.umd.min.js",
"@syncfusion/ej2-grids": "syncfusion:ej2-grids/dist/ej2-grids.umd.min.js",
"@syncfusion/ej2-maps": "syncfusion:ej2-maps/dist/ej2-maps.umd.min.js",
"@syncfusion/ej2-pdf-export": "syncfusion:ej2-pdf-export/dist/ej2-pdf-export.umd.min.js",
"@syncfusion/ej2-svg-base": "syncfusion:ej2-svg-base/dist/ej2-svg-base.umd.min.js",
"@syncfusion/ej2-file-utils": "syncfusion:ej2-file-utils/dist/ej2-file-utils.umd.min.js",
"@syncfusion/ej2-compression": "syncfusion:ej2-compression/dist/ej2-compression.umd.min.js"
},
packages: {
'app': { main: 'QBMapByState.js', defaultExtension: 'js' }
}
});
System.import('app');
我不确定是否需要在此处添加有关 jquery 类型的任何内容。
在我页面的打字稿文件 QBMapByState.ts 中,我做了一些导入,包括 jquery 输入,如下所示:
import { Maps } from "@syncfusion/ej2-maps";
import { RadioButton, CheckBox, Button, ChangeEventArgs } from '@syncfusion/ej2-buttons';
import * as $ from '@types/jquery';
除了 jquery 之外的所有东西都在编译。我收到以下错误:
无法导入类型声明文件。考虑导入“jquery”而不是“@types/jquery”
我怎样才能让它工作?我哪里错了?
解决方案
正如错误所述,您不应该$
从 jquery 类型导入,而是从 jquery 本身导入它:
import $ from "jquery";
至于您的另一个问题,jquery 3 和 jquery 2 之间存在一些重大变化,所以我想您想为 jquery 2 安装使用类型定义:
npm install @types/jquery@2
推荐阅读
- mysql - SQL - 聚合函数和分组依据
- python - 如何检查 SqlAlchemy 中的查询是否返回空结果?
- python - 如果我在 django admin 中删除了用户购物车中的产品,如何删除它
- sql - 在会议上最大限度地增加客人之间的新相遇次数
- python - 抓取网站时缺少 Python html
- excel - EXCEL:有没有一种简单的方法可以让 Excel 图表匹配基于条件格式的单元格格式?
- jquery - 滚动时获取固定 div 上重叠 div 的 id
- php - 将字体颜色“获取行”设置为红色
- sql - Oracle查询在同一张表中查找一对多关系
- javascript - 有没有办法在执行命令时获取所有可用的参数?(Discord.js v12)