从打字稿调用 alertifyjs
call alertifyjs from typescripts
我正在尝试将一些 js 代码迁移到打字稿。
具体来说,我在使用 AlertifyJs 时遇到了麻烦。现在Alertify好像很多东西。
- a discontinued project 来自 fabien-d
- 拿起并继续 alertifyjs 点组织
- 由 MohammadYounes alertifyjs.com 挑选
现在我可以在 DefinitelyTyped 上找到 (1) 的 d.ts,但其他的 none。
我想使用 (3)!
我想以某种方式包装或直接调用 alertify.confirm("you go", "girl"); from ts.
我该如何实现?
谢谢
PS: 在 vs2015 中编码
编辑:
以为我会为你们这些漂亮的书呆子提供一段我得到的代码片段
///<reference path="../typings/jquery/jquery.d.ts"/>
///<reference path="../typings/toastr/toastr.d.ts"/>
module mymodule.Web {
export class CommonTools {
constructor() {
toastr.options.closeButton = false;
}
showInfo(title: string, message: string) {
toastr.info(message, title);
}
showConfirm(title: string, message: string) {
//**code goes here**
}
}
}
最简单(也是最不安全或最不优雅)的解决方案可能是将其添加到打字稿的全局范围内的某处。
declare var alertify: any;
像这样,打字稿会知道 alertify
变量。
如果你更精确,你可以引入你自己的(例如)AlertifyJSStatic
接口与你想使用的那些方法,并将其作为 alertify
变量的类型。
interface AlertifyJSStatic {
confirm(a: string, b:string);
}
declare var alertify: AlertifyJSStatic;
有时快速添加自己的需求比迷失在 d.ts
库(和版本)中更容易。
*我看到有一个可接受的答案,但这是我的解决方案。
对于我的 angular 项目,在使用 npm 安装后,在 TS 文件的导入部分中,复制以下内容...
import * as alertifyJs from 'alertifyjs';
从那里开始,用法就如您所愿。
alertifyJs.confirm('alertify is working');
希望这对您有所帮助。干杯
如果你有库的全局安装,像这样声明它
declare global {
interface Window {
alertify: {
success: Function;
[key: string]: Function; // for all others
};
}
}
现在安全使用
window.alertify.success(...)
根据 Zoltán Tamási 的回答,我创建了一个界面,帮助我解决了 TypeScript 中的编译错误:
// globals/alertify.type.js
interface AlertifyJsStatic {
alert (title: any, message: any, onok?: string);
confirm (title: any, message: any, onok?: any, oncancel?: any);
prompt (title: any, message: any, value?: string, onok?: any, oncancel?: any);
notify (message: string, type?: string, wait?: number, callback?: any);
}
declare var alertify: AlertifyJsStatic;
在任何地方引用它
/// <reference path="globals/alertify.type.ts" />
我正在尝试将一些 js 代码迁移到打字稿。 具体来说,我在使用 AlertifyJs 时遇到了麻烦。现在Alertify好像很多东西。
- a discontinued project 来自 fabien-d
- 拿起并继续 alertifyjs 点组织
- 由 MohammadYounes alertifyjs.com 挑选
现在我可以在 DefinitelyTyped 上找到 (1) 的 d.ts,但其他的 none。 我想使用 (3)!
我想以某种方式包装或直接调用 alertify.confirm("you go", "girl"); from ts.
我该如何实现?
谢谢
PS: 在 vs2015 中编码
编辑: 以为我会为你们这些漂亮的书呆子提供一段我得到的代码片段
///<reference path="../typings/jquery/jquery.d.ts"/>
///<reference path="../typings/toastr/toastr.d.ts"/>
module mymodule.Web {
export class CommonTools {
constructor() {
toastr.options.closeButton = false;
}
showInfo(title: string, message: string) {
toastr.info(message, title);
}
showConfirm(title: string, message: string) {
//**code goes here**
}
}
}
最简单(也是最不安全或最不优雅)的解决方案可能是将其添加到打字稿的全局范围内的某处。
declare var alertify: any;
像这样,打字稿会知道 alertify
变量。
如果你更精确,你可以引入你自己的(例如)AlertifyJSStatic
接口与你想使用的那些方法,并将其作为 alertify
变量的类型。
interface AlertifyJSStatic {
confirm(a: string, b:string);
}
declare var alertify: AlertifyJSStatic;
有时快速添加自己的需求比迷失在 d.ts
库(和版本)中更容易。
*我看到有一个可接受的答案,但这是我的解决方案。
对于我的 angular 项目,在使用 npm 安装后,在 TS 文件的导入部分中,复制以下内容...
import * as alertifyJs from 'alertifyjs';
从那里开始,用法就如您所愿。
alertifyJs.confirm('alertify is working');
希望这对您有所帮助。干杯
如果你有库的全局安装,像这样声明它
declare global {
interface Window {
alertify: {
success: Function;
[key: string]: Function; // for all others
};
}
}
现在安全使用
window.alertify.success(...)
根据 Zoltán Tamási 的回答,我创建了一个界面,帮助我解决了 TypeScript 中的编译错误:
// globals/alertify.type.js
interface AlertifyJsStatic {
alert (title: any, message: any, onok?: string);
confirm (title: any, message: any, onok?: any, oncancel?: any);
prompt (title: any, message: any, value?: string, onok?: any, oncancel?: any);
notify (message: string, type?: string, wait?: number, callback?: any);
}
declare var alertify: AlertifyJsStatic;
在任何地方引用它
/// <reference path="globals/alertify.type.ts" />