跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 请教一道 TypeScript 的面试题
未分類
6 3 月 2021

请教一道 TypeScript 的面试题

请教一道 TypeScript 的面试题

資深大佬 : fdd 1

实现一个 ts 的工具函数 GetOnlyFnProps<T> ,提取泛型类型 T 中字段类型是函数的工具函数,其中 T 属于一个对象。

// 答案 type GetOnlyFnKeys<T extends object> = {     [K in keyof T]: T[K] extends Function ? K : never }[keyof T] // 不太理解这个地方  type GetOnlyFnProps<T extends object> = {     [K in GetOnlyFnKeys<T>]: T[K] }  // 测试用例 // 除了函数类型,其他都删除了 type obj = {     a: () => string,     b: number } type ccc = GetOnlyFnProps<obj>  let value:ccc = {     a: () => '1' } 

大佬有話說 (2)

  • 資深大佬 : seki

    T[K] extends Function ? K : never 是指如果 T[K] 不是 Function 的话,那类型就是 K,否则就是 never

    {
    [K in keyof T]: T[K] extends Function ? K : never
    } 相当于排除掉了值类型不是 function 的,并且现在新的值是 K

    再用 [keyof T] 取一下,拿到的就是 K 了

    这种题你用实际的代码去类比比较合适,同时我觉得考 TypeScript 考这种和考茴的写法没什么区别,太专注于类型魔法了

  • 資深大佬 : yazoox

    感觉像是三年高考五年模拟……
    这类用法平时很少见,碰到了,学习研究一下就懂了。但是,过了一个礼拜,就忘了(可能我年纪大了吧……)。这面试和高考差不多了,这个知识点靠前要是没复习到,就 GG

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具