Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
TS5.4と5.5のいいやつ
Search
めろたんたんめん
May 23, 2024
240
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
TS5.4と5.5のいいやつ
めろたんたんめん
May 23, 2024
More Decks by めろたんたんめん
See All by めろたんたんめん
Nuxt.jsからNext.jsに 乗り換えるにあたって 大変だったこと
renyamizuno
0
310
HoudiniによるCSS錬金術
renyamizuno
0
110
MisocaでReactした話
renyamizuno
1
2.4k
Featured
See All Featured
Building Flexible Design Systems
yeseniaperezcruz
330
41k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
370
Navigating Team Friction
lara
192
16k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
570
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.3k
BBQ
matthewcrist
89
10k
The Cost Of JavaScript in 2023
addyosmani
55
10k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
Writing Fast Ruby
sferik
630
63k
Transcript
TS5.4と5.5のこれ便利そう @merotan
雑自己紹介 めろたん X(Twitter): @renyamizuno_ - 株式会社Leaner Technologiesで働いてる。 - フロントエンドを主軸にガヤガヤしてる人。 -
サーバーサイドもやってる(最近はやってない())。
TS5.4
NoInfer
NoInfer ジェネリック関数で引数の型をもとに、他の引数の形を推測できるようになる。
declare function doSomething<T extends string>(a: T[], b: T): void doSomething(["cat",
"dog"], "hamster")
declare function doSomething<T extends string> (a: T[], b: NoInfer<T>): void
doSomething(["cat", "dog"], "hamster")
None
Narrowing
Preserved Narrowing in Closures Following Last Assignments クロージャーの中で変数の型をよしなにしてくれる(雑 クロージャーの外で定義した変数の型推論がよりよくなる。 最後に代入された値の型になる。
function doSomething(names: string[], word: string | undefined) { if (word
=== undefined) { word = "hello!!"; } return names.map(name => `${name} ${word.toUpperCase()}`) }
function doSomething(names: string[], word: string | undefined) { if (word
=== undefined) { word = "hello!!"; } return names.map(name => `${name} ${word.toUpperCase()}`) }
TS5.5 (Beta)
Inferred Type Predicates
Inferred Type Predicates より良い感じに型を推論してくれる(雑 x === null とかを行った場合、より適切な型推論を行うようになる。 「is」が不要になることがある。
const array = [1,2,3,null,5].filter(x => x !== null) array.reduce((a, b)
=> a + b, 0)
const array = [1,2,3,null,5].filter(x => x !== null) array.reduce((a, b)
=> a + b, 0)
おわり https://devblogs.microsoft.com/typescript/announcing-typescript-5-4/ https://devblogs.microsoft.com/typescript/announcing-typescript-5-5-beta/
Control Flow Narrowing for Constant Indexed Accesses
function f(obj: Record<string, unknown>, key: string) { if (typeof obj[key]
=== "string") { obj[key].toUpperCase(); } }
function f(obj: Record<string, unknown>, key: string) { if (typeof obj[key]
=== "string") { obj[key].toUpperCase(); } }