如何以字符串形式输入函数名称?这段伪代码说明了我的问题
const foo = () => null;
const bar = () => null;
interface Sth {
caller: nameof foo | nameof bar
}
上面的代码生成以下错误:
error TS2503: Cannot find namespace 'bar'.
这样就可以了:
const x: Sth = { caller: 'foo' }
但这会出错:
const y: Sth = { caller: 'y' }
答案 0 :(得分:0)
我很难理解您要在这里完成的工作。
一只手import * as swal from 'sweetalert';
和import * as _swal from 'sweetalert';
import { SweetAlert } from 'sweetalert/typings/core';
const swal: SweetAlert = _swal as any;
是匿名函数,而匿名函数没有名称。...但是,可以想象您已经做过这样的事情:
foo
您希望界面bar
看起来像什么?为什么您根本不关心函数的名称?
根据您的最后评论,我认为您要完成的任务是
function foo(a: number) {
return a;
}
function bar(x: number) {
return x + 1;
}
答案 1 :(得分:0)
如果有人在寻找答案,要实现上述目标,您需要制作一个由函数组成的对象,并使用其键来键入keysof typeof
来提示类型
const foo = () => null;
const bar = () => null;
const functions = { foo, bar };
interface HasCallerType {
caller: keyof typeof functions
}
const a: HasCallerType = {
caller: 'foo'
}
使用此定义,以下内容将出错:
const b: HasCallerType = {
caller: 'meh'
}
这里是在实践中对其进行测试的链接: