![](/img/trans.png)
[英]How to define TypeScript types for chalk's tagged template literal?
[英]Infer Types from Tagged Template Literal Function argment
我想從標記模板文字 function 中的通用參數中獲取類型。
但 typescript 無法從參數“模板”中讀取。 它只是將類型讀取為 TemplateStringsArray。
const tag = <T extends ReadonlyArray<string>>(template: T, ...args: string[]) => {
return {template, args};
};
const a = tag`hello ${'world'}`;
/**
const a: {
template: TemplateStringsArray;
args: string[];
}
*/
有什么方法可以將template
理解為['hello ', '']
嗎?
這里的主要問題是TemplateStringsArray
沒有參數化。 看到這個問題。
但是你仍然可以推斷出除了模板字面量 function 的第一個參數之外的所有參數:
const tag = <
Elem extends string,
Template extends ReadonlyArray<Elem>,
Arg extends string,
Args extends Arg[]
>(template: Template, ...args: [...Args]) => ({ template, args })
// const a: {
// template: TemplateStringsArray;
// args: ["world", "kiwi"];
// }
const a = tag`hello ${'world'} ${'kiwi'}`;
如果您想推斷整個字符串,您應該對每個單詞使用${}
或使用帶有推斷字符串參數的常規 function。 如果您想了解有關 function arguments 類型推斷的更多信息,您可以查看我的文章
PS 如果你對這個功能感興趣,請點贊:上期
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.