gpt4 book ai didi

node.js - 以通用方式解析简单值类型

转载 作者:太空宇宙 更新时间:2023-11-03 22:57:31 25 4
gpt4 key购买 nike

我想解析值,例如使用 TypeScript 以通用方式从 process.env 获取:

type SimpleType = string | number | boolean

function getEnv<T extends SimpleType>(name: string): T {
return process.env[name] as T
}

但是 TypeScript 中的 as 关键字不提供类型转换(例如在 C# 中)。

有通用的方法吗?

最佳答案

Titian's answer很棒,但我会采取稍微不同的方法。

由于他确定类型与运行时无关,因此我们确实需要以值的形式传递类型信息,但在本例中不一定需要开关

String , Number ,和Boolean构造函数都可以静态调用,将任何值转换为各自的原语,因此我们可以定义一个函数,其中提供静态函数作为第二个参数。

type SimpleType = string | number | boolean;

interface SimpleConstructor<T extends SimpleType> {
(value: any): T;
}

function getEnv<T extends SimpleType>(name: string, cast: SimpleConstructor<T>): T {
return cast(process.env[name]);
}

const foo = getEnv('foo', String);
const bar = getEnv('bar', Number);

这里,foo 被推断为 string 类型,bar 被推断为 number 类型。

关于node.js - 以通用方式解析简单值类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56903336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com