来自另一个类的Typescript函数

时间:2016-12-15 13:17:37

标签: typescript

我对打字稿很新,但现在我遇到了问题。 我已经在每个类的

中编写了一个函数
function someFunction(){
}

现在我想从另一个TS文件调用该函数,我声明如下:

declare function someFunction(): void;

但是这不能在浏览器控制台中运行我得到错误

  

未捕获的ReferenceError:未定义someFunction()

文件一看起来像:

export class SomeClass{
}

export function someFunction(){
}

文件二:

///<reference path="File1.ts" />
export class SomeOtherClass{
 someFunction();
}

2 个答案:

答案 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替换为privateprotected,甚至可以将其删除

从浏览器调用应该由您使用事件(click)

使用的框架完成