TypeScript变量是一个类型化的函数

Dav*_*len 4 function typescript

我想在TypeScript类中有一个变量,类型为"boolean isVisible()".

  1. 我该如何申报?
  2. 如何将此函数分配给此变量的另一个实例化对象?
  3. 我该如何调用此功能?

ps - 这似乎是如此基本,但10分钟的搜索,我找不到它.

Rya*_*ugh 6

function boolfn() { return true; }
function strfn() { return 'hello world'; }

var x: () => boolean;
x = strfn; // Not OK
x = boolfn; // OK

var y = x(); // y: boolean
Run Code Online (Sandbox Code Playgroud)


Ale*_*sko 2

这是一种实现方法,不过我很乐意与您合作,准确地弄清楚您想要实现的目标。

export module Sayings {
    export class Greeter {      
        isVisible(): boolean {
            return true;
        }
    }
}

var greeter = new Sayings.Greeter();
var visible = greeter.isVisible();
Run Code Online (Sandbox Code Playgroud)

您还可以使用属性而不是函数。您最初的问题谈到“变量”和“函数”,就好像它们是同一件事一样,但情况不一定如此。

export module Sayings {
    export class Greeter {      
        isVisible: boolean = false;
    }
}

var greeter = new Sayings.Greeter();
var visible = greeter.isVisible;
greeter.isVisible = true;
Run Code Online (Sandbox Code Playgroud)

或者类似的东西?

export module Sayings {
    export class Greeter {      
        constructor(public isVisible: () => boolean) {

        }
    }
}

var someFunc = () => {
    return  false;

}

var greeter = new Sayings.Greeter(someFunc);
var visible = greeter.isVisible();
Run Code Online (Sandbox Code Playgroud)