我现有这样的ES6类ClassA.js
:
module.exports = class A {
test(param) {
console.log(param)
}
test2(param) {
this.test() // no warning here
}
}
我还有一个打字文件ClassA.d.ts
export type A = {
test(param: string): void
test2(param: string): void
}
我还有一个index.js
const A = require('./ClassA');
const a = new A();
a.test(1);
按预期,这会导致WebStorm出现编译器错误,因为test
期望string
。
但是我没有收到this.test()
内缺少参数的ClassA.js
的警告。另外,如果致电this.(1)
不会发出警告。
是否可以在类本身内部发出警告?我还可以使用tsc
包含ClassA.js
并在index.js
以及ClassA.js
内部收到错误类的编译器警告吗?
答案 0 :(得分:1)
不应将键入内容用于库本身,不能使IDE(或tsc编译器)为此目的使用它们。 我建议改用JSDoc注释,例如:
module.exports = class A {
/**
* @param {string} param
*/
test(param) {
console.log(param)
}
/**
* @param {string} param
*/
test2(param) {
this.test() // no warning here
}
}
答案 1 :(得分:-1)
在这里您声明字符串:
export type A = {
test(param: string): void
test2(param: string): void
}
因此,在传递参数时,将其传递为:
const A = require('./ClassA');
const a = new A();
a.test("1");
或者如果要传递数字,则将参数类型声明为数字:
export type A = {
test(param: number): void
test2(param: number): void
}