我对打字稿很新,但现在我遇到了问题。 我已经在每个类的
中编写了一个函数function someFunction(){
}
现在我想从另一个TS文件调用该函数,我声明如下:
declare function someFunction(): void;
但是这不能在浏览器控制台中运行我得到错误
未捕获的ReferenceError:未定义someFunction()
文件一看起来像:
export class SomeClass{
}
export function someFunction(){
}
文件二:
///<reference path="File1.ts" />
export class SomeOtherClass{
someFunction();
}
答案 0 :(得分:3)
您不需要声明该函数,您可以引用包含该函数的文件,然后编译器就会知道它。
例如:
// file1.ts
function someFunction(): string {
...
}
使用它:
// file2.ts
/// <reference path="file1.ts" />
let mystr = someFunction();
您收到的错误是运行时错误,因为您不包含file1.js
:
<script src="file1.js" />
您添加到问题中的代码会为我编译,但有两处更改:
(1)删除了出口:
// file1.ts
class SomeClass {}
function someFunction() {}
(2)增加了一个类方法:
// file2.ts
/// <reference path="file1.ts" />
class SomeOtherClass {
fn() {
someFunction();
}
}
按原创海报编辑: 第二个解决方案(为我工作)
// file1.ts
export function someFunction(){
...
}
使用它:
// file2.ts
import myFunc = require('./file1');
myFunc.someFunction();
答案 1 :(得分:-1)
我没有得到你想要做的事情,但是在定义函数的打字稿中这样做:
public someFunction(): void {}
您可以根据需要将public
替换为private
或protected
,甚至可以将其删除
从浏览器调用应该由您使用事件(click)
等