遗漏的类型错误:app.Med.aff不是一个函数
问题描述:
我创建的代码打字稿,当我加入jQuery和我用requirejs和编译AMD模块,但是当我在浏览器中午饭我有这样的错误:遗漏的类型错误:app.Med.aff不是一个函数
Uncaught TypeError: app.Med.aff is not a function
代码app.ts:
import * as $ from "jquery"
export class Med{
public aff(){
$('#med').click(function(eventObject){
$('#test').show();
})
}
}
代码config.ts:
require(
['app'],
function(app: any){
app.Med.aff()
},
function (err: any) {
console.error('ERROR: ', err.requireType);
console.error('MODULES: ', err.requireModules);
}
);
代码app.js:
define(["require", "exports", "jquery"], function (require, exports, $) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Med = (function() {
function Med() {
}
Med.prototype.aff = function() {
$('#med').click(function (eventObject) {
$('#test').show();
});
};
return Med;
}());
exports.Med = Med;
});
代码config.js:
"use strict";
require(['app'], function (app) {
app.Med.aff();
}, function (err) {
console.error('ERROR: ', err.requireType);
console.error('MODULES: ', err.requireModules);
});
和代码tsconfig.json:
{
"compilerOptions": {
"target": "es5", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', or 'ESNEXT'. */
"module": "amd", /* Specify module code generation: 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */
"noImplicitAny": true,
"strictNullChecks": true,
"outDir": "./build",
"lib": ["es2016","dom"], /* Redirect output structure to the directory. */
"strict": true /* Enable all strict type-checking options. */
},
"exclude": [
"./build",
"./node_modules"
]
}
答
aff
被定义为原型方法。
你需要或者创建Med
一个实例,并调用它new Med().aff()
或者声明aff
静态
export class Med{
static aff(){
$('#med').click(function(eventObject){
$('#test').show();
})
}
}
答
@Yury
此代码的工作:
程式。 ts:
import * as $ from "jquery"
export class Med{
public aff(){
$('#med').click(function(eventObject){
$('#test').toggle('slow');
})
}
}
let f = new Med()
f.aff();
个
代码config.ts:
require(
['app'],
function(app: any){
},
function (err: any) {
console.error('ERROR: ', err.requireType);
console.error('MODULES: ', err.requireModules);
}
);
谢谢你我的朋友
当创建静态aff()..错误已解决,但如何创建新的Med()。aff()!!!和config.ts中的应用程序! – devit2017
@ devit2017我不知道你的要求是什么。你可以像'app.medInstance = new Med'那样做,然后像'app.medInstace.aff()'一样使用它。但是,如果你打算只使用它的一个实例,为什么你要'Med'成为一个类? –
为什么!不解决与app.medInstance =新的Med – devit2017