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
相关产品推荐
相关产品推荐

