You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript中SameSite字符串首字母大写的类型安全实现咨询

解决TypeScript中SameSite属性首字母大写的类型安全实现

要在不依赖类型断言的前提下完成小写SameSite值到首字母大写格式的转换,核心思路是通过类型映射和常量对象绑定运行时逻辑与类型系统,具体实现如下:

1. 定义类型与映射常量

先明确输入输出的类型,并创建一个运行时可用的映射对象,让TypeScript能自动推导类型关系:

// 第三方包返回的小写类型
type LowercaseSameSite = "strict" | "lax" | "none";
// 符合Cookie规范的目标类型
type UppercaseSameSite = "Strict" | "Lax" | "None";

// 绑定小写值与目标值的映射,同时为TypeScript提供类型推导依据
const sameSiteMap: Record<LowercaseSameSite, UppercaseSameSite> = {
  strict: "Strict",
  lax: "Lax",
  none: "None"
};

2. 编写类型安全的转换函数

基于上面的映射对象,实现转换逻辑,TypeScript会自动验证输入输出的类型合法性:

function convertSameSite(sameSite?: LowercaseSameSite): UppercaseSameSite | undefined {
  if (!sameSite) return undefined;
  // 无需类型断言,TypeScript能识别返回值必然是UppercaseSameSite类型
  return sameSiteMap[sameSite];
}

3. 替换原有代码

用转换函数替代手动拼接和断言的逻辑,代码更简洁且类型安全:

let sentenceCaseSameSite: UppercaseSameSite | undefined;
sentenceCaseSameSite = convertSameSite(sessionCookie.attributes.sameSite);

方案优势

  • 彻底摆脱类型断言,完全由TypeScript类型系统保障类型正确性
  • 逻辑集中在映射对象和转换函数中,后续维护只需修改一处即可
  • 避免手动字符串拼接可能出现的错误(比如拼写失误)

内容的提问来源于stack exchange,提问作者Harry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 20:12:49