Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >根据typeof参数值返回类型

根据typeof参数值返回类型
EN

Stack Overflow用户
提问于 2020-01-13 20:27:52
回答 3查看 68关注 0票数 1

我正在创建一个函数,它接受两个参数,一个是key,另一个是要将结果cast到的值。因此,我创建了一个type,它限制了一个项可以转换为的值。我也希望这是返回类型,但是基于EnvCast,它是以typeof为前缀的,所以我使用它的方式是,它应该返回一个typeof x

如何根据cast的值返回类型?因此,如果为cast('my_key', Number),则返回类型将是Number而不是typeof Number

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
declare type EnvCast = typeof Number | typeof Boolean | typeof String;

export function env<T extends EnvCast>(key: string, cast?: EnvCast): T {
    const result = (process.env[key] ? process.env[key] : '') as string;
    if (!cast) { return result; }
    return cast(result);
}

编辑:

我想我可以做这样的事情(有没有办法不用这个):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export function env(key: string, cast: typeof Number): number;
export function env(key: string, cast: typeof Boolean): boolean;
export function env(key: string, cast: typeof String): string;
export function env(key: string, cast: EnvCast): any {
   // Body of function...
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-01-13 23:18:42

cast参数类型可以由扩展EnvCast的类型参数C表示。然后,env函数返回ReturnType,它基本上是number | boolean | string (InstanceType<C>将给我们原始的装箱类型,即no good):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export function env<C extends EnvCast>(key: string, cast?: C): ReturnType<C> {
  const result = (process.env[key] ? process.env[key] : '') as string;
  if (!cast) { throw new Error() /* or something else you want to do here */ }
  return cast(result) as ReturnType<C>;
}

const r1 = env("myKey", Number) // number
const r2 = env("myKey", Boolean) // boolean
const r3 = env("myKey", String) // string
const r4 = env("myKey", Array) // error
const r5 = env("myKey", Date) // error

Sample

票数 2
EN

Stack Overflow用户

发布于 2020-01-13 20:52:00

使用generic函数怎么样?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function env<T>(key: string, cast: T): T {

}

用法如下所示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const x = env<number>('' , 10); // x will be of type number
票数 0
EN

Stack Overflow用户

发布于 2020-01-13 20:52:33

有些不同的方法,如果我理解你的需求,这可能是可行的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
declare type EnvCast = Number | Boolean | String;
export function env<T extends EnvCast>(key: string, cast?: (string)=>T):T {
    const result = (process.env[key] ? process.env[key] : '') as string;
    return cast(result);
}
const x= env('42',Number)  //x is number here
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59723691

复制
相关文章
js typeof 返回类型「建议收藏」
number, boolean, string, undefined, object, function,symbol(ES6以上版本才有);
全栈程序员站长
2022/11/17
2.2K0
JavaScript中数据类型和typeof返回的数据类型
3.typeof(Object)和typeof(Array)的结果是function,因为Object和Array本身就是内置函数。
IT人一直在路上
2019/09/18
2.1K0
JavaScript中数据类型和typeof返回的数据类型
根据输入数组的整数值返回数组 {inputScoreRet[0],inputSocreRet[1]}
根据输入数组的整数值 intputArr1{1,1,3} inputArr2{13,3,4} * 如果inputArr1[0]==inputArr2[0] inputArrRet1Score get 0 socre inputSCoreRet[0]+=0; * 如果 inputArr1[1]>inputArr2[1] inputArrRet1Score get 1 score inplutScoreRet[0]+=1; * 否则 inputScoreRet[1]+=1; * 返回数组 {inputScoreRet[0],inputSocreRet[1]} * constraints: * 1<=a[i]<=100 * 1<=b[i]<=100
coderlwz
2023/10/17
1100
JS篇(013)-javascript 的 typeof 返回哪些数据类型
答案:7种 分别为number, boolean, string, undefined, object, function,symbol(ES6)
齐丶先丶森
2022/05/12
1.3K0
typeof运算对于null会返回“Object"
您也许会问,为什么 typeof 运算符对于 null 值会返回 "Object"。这实际上是 JavaScript 最初实现中的一个错误,然后被 ECMAScript 沿用了。现在,null 被认为是对象的占位符,从而解释了这一矛盾,但从技术上来说,它仍然是原始值。
阮键
2019/08/07
2.2K0
Python如何校验函数参数入参类型以及规定返回结果类型
我们在写JAVA的时候,可能大家都知道,我们可以规定参数的类型,当参数类型输入错误的时候,就抛出来对应的参数的异常,而且我们规定参数的返回类型,那么我们看下如何校验这个参数和规定返回类型。
雷子
2021/12/04
3.1K0
Python如何校验函数参数入参类型以及规定返回结果类型
JavaScript基础:typeof null 为什么返回object
null本身实际上是基本类型,但是Javascript在存储的时候,会将不同的对象在底层存储都使用二进制的方式存储,在Javascript中如果二进制的前三位都为0的话就会被判断为object,null的二进制存储表示形式为全是0,自然前三位也是0,因此执行typeof时会返回”object”。
IT工作者
2022/01/26
3K0
Python数值类型
python的数值类型包括常规的类型:整数(没有小数部分的数字)、浮点数(通俗地说,就是有小数部分的数字)以及其它数值类型(复数、分数、有理数、无理数、集合、进制数等)。除了十进制整数,还有二进制数、八进制数、十六进制数。
py3study
2020/01/21
2.2K0
Python——数值类型
python的数值类型包括整数,浮点数,复数,集合,小数和分数,布尔值。它们都是python中的数值类型。如果是有过其他语言编写经验的人,一定很好奇,浮点数和小数的区别是什么?
zy010101
2021/06/09
1.1K0
javascript当中类型转换,typeof的用法
1)类型转换,typeof的用法 例 3.1.1 <HTML> <head>     <meta http-equiv="content-type" content="text/html; charset=utf-8"/> </head> <BODY> <SCRIPT LANGUAGE="JavaScript">     <!--     /*     Cast operator (Definition)  refer to 过去的网站www.favo.com     A way of converting data types.     Primitive values can be converted from one to another or rendered as objects by using object constructors to convert the values.     Boolean                                            Number                                             String                                             Number() (Function)  马克-to-win: actually Number() is the method of Global object.     A Number type convertor.     Property/method value type: Number primitive     JavaScript syntax: - Number()     - Number(aValue)     Argument list: aValue A value to be converted to a number.     When the Number() constructor is called as a function, it will perform a type conversion.     The following values are yielded as a result of calling Number() as a function:     Value                            Result     Number                            No conversion, the input value is returned unchanged.     Non numeric string                NaN     window.Number("23");在favo中查不出来, 但Idea中可以打点打出来。     */     var a = 9; /*下句话如果放在ie8中执行, 必须打开debug工具*/ //    console.log(typeof(a));     document.writeln(typeof(a));     var as = String(a);     //String是Global的方法     document.writeln("typeof(as) is " + typeof(as));     var x = window.Number("23");     document.writeln("typeof(x) is " + typeof(x));     var age2 = Number("56");     document.writeln(typeof(age2) + "is typeof(age2)");     var age3 = new Number(56);
马克java社区
2019/10/04
7720
javascript当中类型转换,typeof的用法
【Python】类型注解 ④ ( 函数类型注解 | 函数形参类型注解语法 | 函数返回值类型注解 )
由于定义 函数 时 , 没有为 函数形参 设置 类型注解 , 编写函数时 , PyCharm 工具无法提示没有类型的形参 :
韩曙亮
2023/10/11
3750
【Python】类型注解 ④ ( 函数类型注解 | 函数形参类型注解语法 | 函数返回值类型注解 )
Python编程 数值类型 布尔类型
比如我们抛硬币,不是正面就是反面。那其实 对于对与错、0与1,都是传统意义上的布尔 类型。
网络豆
2022/11/20
1.1K0
Python编程 数值类型 布尔类型
【说站】JavaScript中typeof类型判断的使用
最好使用instanceof。instanceof的原理是基于原型链的查询。只要在原型链中,判断永远是true。
很酷的站长
2022/11/23
7020
【说站】JavaScript中typeof类型判断的使用
基础篇-Python发送post请求《根据参数位置传参、数据类型、不同方式传参》
https 的请求,打开 fiddler 的时候,同时运行代码会报错,提示没有这个证书。可以忽略这个证书,加上verify=False就可以了。但是还是有警告,可以这样写:
清菡
2021/02/26
4.1K0
基础篇-Python发送post请求《根据参数位置传参、数据类型、不同方式传参》
Python--数值类型
Python数值类型 变量 -变量是内存中的一块区域。 变量的命名:变量由字母,数字,下划线组成。 python中地址变量与c语言刚好相反,一条数据包含包含多个标签; 1、Input与raw_inp
py3study
2020/01/10
8320
​go语言数值类型及布尔类型
常量是程序在编译时就确定的值,程序在执行时不能修改常量的值。声明常量使用关键字const。在声明常量时,需要对常量赋值。
暮雨
2019/08/13
8650
MySQL中数字类型、数值类型、时间类型
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
chenchenchen
2019/09/02
3.1K0
Python数据类型 -数值类型(整数,
Python3 整型是没有限制大小的,可以当作 Long 类型使用,所以 Python3 没有 Python2 的 Long 类型。
py3study
2020/01/09
1.3K0
小程序根据返回值的int类型渲染不同的状态
需求:返回值里面有 0,1,2,3,4 分别代表面试,开会,拜访顾客,项目实施,其他这5中类型,需要将获取到的0,1,2,3,4渲染到页面上,分别显示所对应的类型状态面试,开会,拜访顾客,项目实施,其他。
王小婷
2021/06/22
1.8K0
小程序根据返回值的int类型渲染不同的状态
go语言数值类型及布尔类型
常量声明常量是程序在编译时就确定的值,程序在执行时不能修改常量的值。声明常量使用关键字const。在声明常量时,需要对常量赋值。const 名称 类型 = 值 或 const 名称 = 值 自动做类型推断
暮雨
2019/08/21
8130

相似问题

根据入参判断返回类型

13

typeof()检查数值

23

返回类型上的typeOf

22

typeof的返回类型是什么?

50

Typescript:根据自定义类型检查"typeof“

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文