错误TS2339:类型'JQuery'上不存在属性'modal'

问题描述 投票:21回答:6

我正在使用带有AngularJS的Typescript。我使用jQuery库的类型定义的模态有问题。我收到以下错误:'错误TS2339:类型'JQuery'上不存在属性'模态'。

版本:jQuery库,版本1.10.x / 2.0.x定义:https://github.com/borisyankov/DefinitelyTyped

$scope.delete = function (id) {
  Photo.get({id: id}, function(result) {
     $scope.photo = result;
     $('#deletePhotoConfirmation').modal('show');// error line 
  });
};

我在jquery.d.ts引用angular.d.ts

<reference path="../jquery/jquery.d.ts" />

我的全球供应商参考文件如下所示:

<reference path='../vendor/types/angular/angular.d.ts' />
<reference path='../vendor/types/angular/angular-mocks.d.ts' />
<reference path='../vendor/types/jasmine/jasmine.d.ts' />
jquery modal-dialog typescript
6个回答
46
投票

使用较新版本的打字稿(> v2我相信):

npm install -D @types/bootstrap

编辑:正如hughjdavey在评论中所说,你还需要以下导入行:import * as bootstrap from“bootstrap”;从'jquery'导入*为$;


19
投票

您的问题是由于modal文件中缺少名为jquery.d.ts的属性引起的。

如果你确定这个工作在纯JS中你可以像这样欺骗它

$scope.delete = function (id) {
  Photo.get({id: id}, function(result) {
     $scope.photo = result;
     (<any>$('#deletePhotoConfirmation')).modal('show');
  });
};

此外,您还可以找到已定义此选项的其他d.ts文件。

尝试考虑已​​经有this选项的modal

祝好运!


6
投票

这项工作对我来说,我在第一行添加: declare var $ :any; 这声明$类型是any


4
投票

尝试安装Bootstrap DefinitelyTyped的类型

typings install --global --save dt~bootstrap


4
投票

在我的情况下,我不得不使用

npm install -D @types/bootstrap

然后我不得不导入bootstrap

import * as bootstrap from 'bootstrap';

但最重要的一步是删除jquery

import * as $ from 'jquery';

否则它给了我这个错误:

TypeError:$(...)。modal不是函数


3
投票

只需添加

import * as bootstrap from "bootstrap";
import * as $ from "jquery";

在你的app.module.ts

并安装这些包

npm install @ types / jquery --save-dev

npm install @ types / bootstrap --save-dev

© www.soinside.com 2019 - 2024. All rights reserved.