You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript中如何为回调参数指定特定类型?

正确定义接收string参数的回调函数

你遇到的错误是因为Function(string)不是TypeScript里定义函数类型的正确语法——string是类型,不能当作值传递给Function构造函数。下面是几种正确的写法:

1. 直接在参数中定义函数类型

最直接的方式是在callback参数的类型位置,用箭头函数语法定义函数类型:

function LoadJSON(callback: (str: string) => void) {
    FS.readFile(dir + '/' + file, (err, fd) => {
        if (err) {
            console.log(err);
            return;
        }
        console.log(fd);
        console.log('File loaded');
        callback(JSON.stringify(fd));
        return;
    });
}

这里(str: string) => void表示:这个回调函数接收一个名为str的string类型参数,且没有返回值(如果你的回调需要返回值,把void换成对应的类型即可)。

2. 使用类型别名(适合复用场景)

如果这个回调类型需要在多个地方使用,可以先定义一个类型别名:

// 定义回调类型别名
type StringHandler = (str: string) => void;

function LoadJSON(callback: StringHandler) {
    // 函数内容和之前一致
}

3. 使用接口(可选写法)

也可以用接口来定义函数类型,效果和类型别名类似:

interface StringCallback {
    (str: string): void;
}

function LoadJSON(callback: StringCallback) {
    // 函数内容和之前一致
}

以上三种方式都能明确约束传入的回调必须接收一个string类型的参数,解决你遇到的语法错误。

内容的提问来源于stack exchange,提问作者WDUK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 16:34:55