惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

AI
AI
T
Tailwind CSS Blog
雷峰网
雷峰网
人人都是产品经理
人人都是产品经理
Microsoft Azure Blog
Microsoft Azure Blog
爱范儿
爱范儿
P
Proofpoint News Feed
D
Docker
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 【当耐特】
云风的 BLOG
云风的 BLOG
有赞技术团队
有赞技术团队
The Cloudflare Blog
Engineering at Meta
Engineering at Meta
酷 壳 – CoolShell
酷 壳 – CoolShell
U
Unit 42
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 司徒正美
博客园 - Franky
The GitHub Blog
The GitHub Blog
月光博客
月光博客
小众软件
小众软件
Martin Fowler
Martin Fowler
P
Palo Alto Networks Blog
Google DeepMind News
Google DeepMind News
Hugging Face - Blog
Hugging Face - Blog
T
Threat Research - Cisco Blogs
阮一峰的网络日志
阮一峰的网络日志
IT之家
IT之家
K
Kaspersky official blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
S
Securelist
Spread Privacy
Spread Privacy
博客园 - 聂微东
B
Blog
The Hacker News
The Hacker News
Simon Willison's Weblog
Simon Willison's Weblog
T
The Exploit Database - CXSecurity.com
S
Schneier on Security
P
Privacy International News Feed
腾讯CDC
C
Cyber Attacks, Cyber Crime and Cyber Security
T
Threatpost
T
Tenable Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Cyberwarzone
Cyberwarzone
C
Cybersecurity and Infrastructure Security Agency CISA
Stack Overflow Blog
Stack Overflow Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
H
Heimdal Security Blog

TypeScript

ts 生态有没有开源的简单的 kv 配置管理项目 - V2EX 你们是怎么学习 typescript 的? - V2EX 用 Go 移植的 TypeScript 7 要来了 - V2EX TypeScript5.9,仿佛走出草原来到了现代社会 - V2EX Typescript 有没有能对接 AI 的知识库或者文档?能处理稍微复杂点的类型 - V2EX typescript 如何返回一个动态对象类型 - V2EX ts 有没有直接能查看最终类型的方法 - V2EX TypeScript Native 预览版发布了 - V2EX 关于 TypeScript 装饰器和接口的问题,请教一下各位 - V2EX 你们 typescript 用自带枚举还是字符串枚举,感觉字符串枚举类型用起来有点不可靠啊 - V2EX effect-ts - V2EX typescript 达人乱入 - V2EX TypeScript 宣布原生移植计划,性能将提升 10 倍? - V2EX #笔记#更好的 ts 重载声明方法 - V2EX 使用 satisfies 实现穷举类型保护 - V2EX 请教一个 TS 问题,不知能否实现 - V2EX 装饰器能不能装饰类的所有方法 - V2EX TypeScript 项目打包发布到 npm,如何给方法和接口添加 dts TypeScript 类型推导真强大。 - V2EX 为啥下面这段代码 TS 不报错 - V2EX ts 类型约束+请求参数校验+自动生成 openapi/swagger 文档,这三者目前有整合为一体的最佳实践吗 - V2EX TypeScript 能不能别这么古怪,这行为什么会报错呢? - V2EX 怎么每次碰到想不通的代码行都出在 TypeScript😢 这行到底哪里有问题? - V2EX 低估了 typescript 的难度 - V2EX 前端写 nestjs 后端,用 TypeORM 时感到非常困惑,不知道是不是我的理解有问题 - V2EX 我列举了市面上最好的几个 TypeScript 教程, 想深入学习 TypeScript 的同学以后不用走弯路了 - V2EX 这样的函数类型定义在 ts 里面叫什么? - V2EX typescript 如何忽略泛型参数啊? - V2EX TypeScript 现在的应用场景 - V2EX ==TypeScript 写的 npm 包可以用 javascript 使用包的函数吗 - V2EX react 如何优雅的实现批量删除+二次确认 - V2EX TypeScript 怎么 wrap 一个函数并修改一下返回值? - V2EX 想请教个 TypeScript 抽象类继承父类的问题。 - V2EX vscode 纯 js 项目有类型推断和成员变量提示,但是如果 ts 混用的话, js 导入就全变成 any 了,请问有办法解决吗 这个项目这样定义 Typescript 类型和使用,学到了,有几个问题? - V2EX 请教一个 Typescript 的问题 - V2EX 这种的类型是不是实现不了(TypeScript) - V2EX 问题一个 typescript 类型包裹问题 - V2EX 遇到了极其诡异的不符合进入 if 条件的要求但是还是进入了 - V2EX typescript 的类型处理 - V2EX 想问问大家 TypeScript 中关于 null 处理的方式 - V2EX 有没有声明 typescript 类型的好办法以及前端样式的健壮性问题 - V2EX typescript 类型断言问题 - V2EX TypeScript 中类型编程简介 - V2EX [求助] 类型 { K:V } --> { "type": K , "conf": V } 且约束 - V2EX 大佬们, vscode 开发 ts,这个地方的提示,怎么修改成中文啊 - V2EX TypeScript 中「类型定义的命名空间」使用 - V2EX 有没有办法把 ts 的 error 报错改成 warning - V2EX [求助] 函数中使用泛型缩小参数类型 - V2EX
TypeSciprt 类型推断,如何进一步收窄类型? - V2EX
yandif · 2024-11-08 · via TypeScript

这是一个创建于 583 天前的主题,其中的信息可能已经有所发展或是发生改变。

以下代码中 value 只能推断出是 1 | 2 | 3 。

想问下大佬们,TypeSciprt 目前只不支持在 if(k === 'a') 时推断出 value 为 1 。

或者有没有什么搜索的关键词。查了半天没找到怎么更一步收窄这个类型。

const map = {
  a: 1,
  b: 2,
  c: 3,
} as const;

type Map = typeof map;

function fn<K extends keyof Map>(k: K, value: Map[K]) {
  if (k === 'a') {
    console.log(value); //value: 1 | 2 | 3
  }

  if (k === 'b') {
    console.log(value);
  }

  if (k === 'c') {
    console.log(value);
  }
}
renmu

1

renmu      2024 年 11 月 8 日 via Android

试试 switch ?

powerfulyang

2

powerfulyang      2024 年 11 月 8 日   ❤️ 3

const map = {
a: 1,
b: 2,
c: 3,
} as const;

type Map = typeof map;

type Params = { [K in keyof Map]: { k: K; value: Map[K] } }[keyof Map];

function fn(params: Params) {
const {k, value} = params;

if (k === 'a') {
console.log(value); // value: 1
} else if (k === 'b') {
console.log(value); // value: 2
} else if (k === 'c') {
console.log(value); // value: 3
}
}

fn({k: 'a', value: 1});
fn({k: 'b', value: 2});
fn({k: 'c', value: 3});

感觉现在还没那么强大,换个写法倒是可以?

RIckV2

3

RIckV2      2024 年 11 月 8 日   ❤️ 1

type If<C, T, F> = C extends true ? T : F

type MyPick<T, K extends keyof T> = {
[P in K]:T[P]
}

type A = If<k === 'a', MyPick<Map,'1'>,MyPick<Map> >

类似的逻辑,仅供参考

lisxour

4

lisxour      2024 年 11 月 9 日   ❤️ 1

换 2 楼的写法可以的,这个理论上是能推出来的,靠 ts 更新去支持了

kashao

6

kashao      2024 年 11 月 14 日

学习了