网站搜索

来自另一个类的 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) 等从浏览器进行调用