Javascript 如何在Typescript中实现JS函数指针

Javascript 如何在Typescript中实现JS函数指针,javascript,typescript,Javascript,Typescript,我在Javascript中获得了以下内容: var chartOptions = { chartType: settings.chartType, } chartOptions.func = function(chart) { chartOptions.fullChart = chart; } 这一切都很好 但是我想把它改成TypeScript,作为一个新手,我不知道该怎么做。有人能帮忙吗?例如,“func”没有符号,“fullChart”也没有符号,那么在Javascrip

我在Javascript中获得了以下内容:

var chartOptions = {
    chartType: settings.chartType,
}

chartOptions.func = function(chart) {
    chartOptions.fullChart = chart;
}
这一切都很好


但是我想把它改成TypeScript,作为一个新手,我不知道该怎么做。有人能帮忙吗?例如,“func”没有符号,“fullChart”也没有符号,那么在Javascript中这是如何工作的呢?

您可以通过将属性添加到
图表选项中来修复代码:

var chartOptions = {
    chartType: settings.chartType,
    func: null,
    fullChart: null
}

chartOptions.func = function(chart) {
    chartOptions.fullChart = chart;
}
将代码转换为类怎么样?更像是TypeScript-y:)


在设置选项之前,请考虑使用接口定义选项。要镜像特定代码段,可以在此处使用类型断言

interface ChartOptions {
    chartType: string;
    func: (chart: any) => void;
    fullChart: any;
}

var chartOptions = {
    chartType: settings.chartType
} as ChartOptions

chartOptions.func = function(chart) {
    chartOptions.fullChart = chart;
}
这实际上取决于最终目标,但是如果您可以设置开始的选项,那么就不需要类型断言(无论如何都要尽可能避免)


或者您可以按照其他用户的建议使用一个类,它更像您应该在这里使用的,而不是您的示例所使用的。

不清楚您在这里要问什么。你是在要求解释代码吗?typescript与此有什么关系?“func”或“fullChart”没有符号是什么意思?您已将它们声明为
chartOptions
对象的属性。当我将上述逻辑放入Typescript时,编译器返回一个错误,它无法解析符号“func”和“fullChart”。我需要做什么来纠正这个问题?关于“构造函数(公共图表类型:any){}”呢?或者任何特定类型而不是ctor参数的任何类型?@TSV:当我试图回答初学者的问题时,我不会使用这些高级功能,例如
…(public chartType…
)。在我看来,这只会引起更多的混乱。不了解OP的代码,这只是猜测而已。。
interface ChartOptions {
    chartType: string;
    func: (chart: any) => void;
    fullChart: any;
}

var chartOptions = {
    chartType: settings.chartType
} as ChartOptions

chartOptions.func = function(chart) {
    chartOptions.fullChart = chart;
}
interface ChartOptions {
    chartType: string;
    func: (chart: any) => void;
    fullChart?: any;
}

var chartOptions: ChartOptions = {
    chartType: settings.chartType,
    func (chart: any) {
        this.fullChart = chart;
    }
}