Typescript 用于显示返回变量名称的类型脚本承诺类型
我正在用Typescript为管理仪表板编写一些函数,这些函数将返回带有特定值(通常是字符串)的承诺 我使用的是VS代码,当我在调用函数名时将鼠标悬停在函数名上,它会显示返回值的类型(字符串、数字等)。 我还想在显示类型的同时显示一个名称,我想知道最好的方法是什么 目前,我正在返回一个对象,该对象的属性具有显式名称及其旁边的类型 例如: 通常,你会这样写:Typescript 用于显示返回变量名称的类型脚本承诺类型,typescript,types,promise,Typescript,Types,Promise,我正在用Typescript为管理仪表板编写一些函数,这些函数将返回带有特定值(通常是字符串)的承诺 我使用的是VS代码,当我在调用函数名时将鼠标悬停在函数名上,它会显示返回值的类型(字符串、数字等)。 我还想在显示类型的同时显示一个名称,我想知道最好的方法是什么 目前,我正在返回一个对象,该对象的属性具有显式名称及其旁边的类型 例如: 通常,你会这样写: function normalizeCarMake (carMake: string):Promise<string> {}
function normalizeCarMake (carMake: string):Promise<string> {}
函数normalizeCarMake(carMake:string):Promise{}
我是这样写的:
function normalizeCarMake (carMake: string):Promise<{carMake: string}> {}
函数normalizeCarMake(carMake:string):Promise{}
因此,当我将鼠标悬停在VS代码中的函数调用上时,它将显示:
(alias) normalizeCarMakePromise(driverCarMake: string): Promise<{
carMake: string;
}>
(别名)normalizeCarMakePromise(driverCarMake:string):Promise
有没有更好的方法来实现这一结果?我不想让所有只返回一个值的promise返回变得复杂。据我所知,您只想在运行时使用
string
,而不是包含string
的对象,但您希望编译时存在类似carMake
的东西。一个想法是使用类型别名:
type CarMake = string;
function normalizeCarMake(carMake: CarMake): Promise<CarMake> { ... }
类型CarMake=string;
函数normalizeCarMake(carMake:carMake):Promise{…}
不幸的是,当您将鼠标悬停在normalizeCarMake
上时,它只会取消引用该别名并显示给您
函数normalizeCarMake(carMake:string):按照我的理解,您希望在运行时只使用string
,而不是包含字符串的对象,但您希望类似carMake
的东西在编译时存在。一个想法是使用类型别名:
type CarMake = string;
function normalizeCarMake(carMake: CarMake): Promise<CarMake> { ... }
类型CarMake=string;
函数normalizeCarMake(carMake:carMake):Promise{…}
不幸的是,当您将鼠标悬停在normalizeCarMake
上时,它只会取消引用该别名并显示给您
函数normalizeCarMake(carMake:string):保证我不认为string
等同于{carMake:string}
。第一个是string
,第二个是object
,它包含名为carMake
的属性,类型为string
本身。单独的字符串和包含字符串的对象之间有区别。我认为在您的情况下,最好的方案是将该字符串
包装在单独的类
中,并返回该字符串,而不是普通字符串。这样你就可以实现你想要的,但是这也是最好的编码标准的一个很好的实践。我所说的在类中包装string
基本上就是这样做的:export-class-CarMake{constructor(public-CarMake:string){}
我不认为string
等同于{CarMake:string}
。第一个是string
,第二个是object
,它包含名为carMake
的属性,类型为string
本身。单独的字符串和包含字符串的对象之间有区别。我认为在您的情况下,最好的方案是将该字符串
包装在单独的类
中,并返回该字符串,而不是普通字符串。这样你就可以实现你想要的,但是这也是最好的编码标准的一个很好的实践。我所说的在类中包装string
基本上就是这样做的:export-class-CarMake{constructor(public-CarMake:string){}
谢谢你的回答,我可以这么做。但是,我每次都返回一个对象而不是仅仅返回一个字符串,这是一个问题吗?如果您想这样做,返回类型为{carMake:string}
的对象不是问题。正如你所指出的,这增加了一点复杂性。。。在运行时,当您只关心一个字符串时,您必须包装和打开一个对象。但这并没有什么错。@jcalz谢谢你分享这个技巧。这是一个文档化的特性,还是你发现它是一个打字脚本?我想它是文档化的。谢谢你的回答,我可能会这么做。但是,我每次都返回一个对象而不是仅仅返回一个字符串,这是一个问题吗?如果您想这样做,返回类型为{carMake:string}
的对象不是问题。正如你所指出的,这增加了一点复杂性。。。在运行时,当您只关心一个字符串时,您必须包装和打开一个对象。但这并没有什么错。@jcalz谢谢你分享这个技巧。它是有文档记录的功能还是你发现它是一个打字脚本?我想它有文档记录