来自另一个类的 Typescript 函数
我对 TypeScript 还比较新,但现在我遇到了一个问题。我已经用 TypeScript 从每个类中写了一个函数
function someFunction(){
}
现在我想从另一个 TS 文件调用这个函数,我是这样声明它的:
declare function someFunction(): void;
但是这在浏览器控制台中无法工作,我收到错误
未捕获的引用错误:someFunction() 未定义
文件一看起来像这样:
export class SomeClass{
}
export function someFunction(){
}
文件二:
///<reference path="File1.ts" />
export class SomeOtherClass{
someFunction();
}
答案#1
您不需要声明该函数,您可以引用包含该函数的文件,然后编译器就会知道它。
例如:
// 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();
答案#2
我不太明白你到底想做什么,但在 TypeScript 中定义函数是这样做的:
public someFunction(): void {}
你可以根据需要将 public 替换为 private 或 protected,甚至可以去掉它
应由您使用的框架通过事件 (click) 等从浏览器进行调用
