javascript - 如何用参数和模板文字描述函数?
问题描述
我正在为我的项目正在使用的第三方模块创建类型。
其中一个函数是这样调用的:
callFunc(paramOne, paramTwo)`
stringLiteral: ${something},
somethingElse: ${here}
`;
我试图弄清楚如何在打字稿中描述这样的功能,但打字稿文档在这种特定情况下并没有真正帮助。我知道如何描述前两个参数,但是如何为模板/字符串文字添加类型?
解决方案
标记模板是函数,其中第一个参数是类型TemplateStringsArray
,然后其余参数只是模板中表达式的值。例如,我们可以定义t
:
function t(s: TemplateStringsArray, ...a:any[]) {
console.log(t); // will output ["a", "b"] for the example below
console.log(a); // will output [0] for the example below
return ""
}
t`a${0}b`
在您的情况下,该函数callFunc(paramOne, paramTwo)
返回一个标记模板,因此定义应类似于:
declare function callFunc(paramOne: string, paramTwo: number) : (s: TemplateStringsArray, ...a:any[]) => string;
callFunc("", 1)`a${0}`
对参数类型做了一些假设,但除了TemplateStringsArray
其他一切都取决于你的库的细节
推荐阅读
- python - 从 PANDAS 导入 MS SQL Server CSV 很慢。有什么选择吗?
- python-3.x - python socket只接收最后一行
- flutter - 如何使用 GestureDetect 在 Flutter 中点击 CustomPaint 路径?
- nuxt.js - Nuxt 404 页面刷新页面
- ruby-on-rails - 在 Sidekiq 重试之前(或期间)运行回调
- perl - 将 Markdown 文件中包含特定路径模式的所有节标题转换为不同的格式
- java - 通过spring boot java本地访问时,AWS Elastic Cache(Redis)连接失败(jedis连接错误)
- r - 在 Shiny 中,“闭包”类型的对象不是子集,尽管使用了括号
- java - 如何一次选择 1 个单选按钮(RecyclerView)?
- sql - 加入窗口函数以显示与 ID 相关的下一个日期