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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
めろたんたんめん
May 23, 2024
0
200
TS5.4と5.5のいいやつ
めろたんたんめん
May 23, 2024
Tweet
Share
More Decks by めろたんたんめん
See All by めろたんたんめん
Nuxt.jsからNext.jsに 乗り換えるにあたって 大変だったこと
renyamizuno
0
290
HoudiniによるCSS錬金術
renyamizuno
0
110
MisocaでReactした話
renyamizuno
1
2.4k
Featured
See All Featured
WENDY [Excerpt]
tessaabrams
9
36k
Google's AI Overviews - The New Search
badams
0
910
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
A designer walks into a library…
pauljervisheath
210
24k
Code Reviewing Like a Champion
maltzj
527
40k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.3k
Become a Pro
speakerdeck
PRO
31
5.8k
Crafting Experiences
bethany
1
50
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
410
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.9k
How GitHub (no longer) Works
holman
316
140k
Faster Mobile Websites
deanohume
310
31k
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(); } }