Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 用于显示返回变量名称的类型脚本承诺类型_Typescript_Types_Promise - Fatal编程技术网

Typescript 用于显示返回变量名称的类型脚本承诺类型

Typescript 用于显示返回变量名称的类型脚本承诺类型,typescript,types,promise,Typescript,Types,Promise,我正在用Typescript为管理仪表板编写一些函数,这些函数将返回带有特定值(通常是字符串)的承诺 我使用的是VS代码,当我在调用函数名时将鼠标悬停在函数名上,它会显示返回值的类型(字符串、数字等)。 我还想在显示类型的同时显示一个名称,我想知道最好的方法是什么 目前,我正在返回一个对象,该对象的属性具有显式名称及其旁边的类型 例如: 通常,你会这样写: function normalizeCarMake (carMake: string):Promise<string> {}

我正在用Typescript为管理仪表板编写一些函数,这些函数将返回带有特定值(通常是字符串)的承诺

我使用的是VS代码,当我在调用函数名时将鼠标悬停在函数名上,它会显示返回值的类型(字符串、数字等)。 我还想在显示类型的同时显示一个名称,我想知道最好的方法是什么

目前,我正在返回一个对象,该对象的属性具有显式名称及其旁边的类型

例如:

通常,你会这样写:

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谢谢你分享这个技巧。它是有文档记录的功能还是你发现它是一个打字脚本?我想它有文档记录