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
Typescript5.4の新機能
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
rakus frontend
April 21, 2024
340
0
Share
Typescript5.4の新機能
rakus frontend
April 21, 2024
More Decks by rakus frontend
See All by rakus frontend
新卒FEが1年目に取り組んだこと・学んだこと
rakus_fe
0
55
ErrorBoundaryとSuspenseの導入検討
rakus_fe
1
810
日付をもう少し真面目に勉強中
rakus_fe
0
52
React19 β をざっと見る
rakus_fe
0
350
Reactのパフォーマンス改善例
rakus_fe
0
570
非破壊的な配列メソッド
rakus_fe
0
400
ココがすごいぜ!Playwright Component Test
rakus_fe
0
610
スプレッドシートのセル結合がつらいので足掻いてみた話
rakus_fe
0
290
Featured
See All Featured
Game over? The fight for quality and originality in the time of robots
wayneb77
1
170
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
190
Chasing Engaging Ingredients in Design
codingconduct
0
180
Practical Orchestrator
shlominoach
191
11k
How to train your dragon (web standard)
notwaldorf
97
6.6k
Documentation Writing (for coders)
carmenintech
77
5.3k
How Software Deployment tools have changed in the past 20 years
geshan
0
33k
We Have a Design System, Now What?
morganepeng
55
8.1k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.4k
Technical Leadership for Architectural Decision Making
baasie
3
350
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
Transcript
TypeScript5.4の新機能 村山陽亮
型の絞り込み 5.4以前 function getUrls(url: string | URL, names: string[]) {
if (typeof url === "string") { url = new URL(url); } return names.map(name => { // if (typeof url === "string") return; url.searchParams.set("name", name); return url.toString(); }); } 関数クロージャ内で型情報が 保持されなかった 関数内でもう一度型情報 を絞り込む必要がなくなっ た
型の絞り込み 注意点 function printValueLater(value: string | undefined) { // ここで呼び出すことが可能
// toUpperCaseFn(); if (value === undefined) { value = "missing!"; } function toUpperCaseFn() { // エラーが発生する console.log(value.toUpperCase()); } // エラーは発生しない const toUpperCaseFn2 = () => console.log(value.toUpperCase()); } functionで関数宣言をした場 合、ホイスティングができるた め、型情報は保持されない
NoInfer ・5.4から新しく追加されたユーティリティ型 ・不要な型推論をブロックすることができる function createStreetLight<C extends string>(colors: C[], defaultColor?: C)
{ // ... } // blueはcolorsの配列に含まれていないのにエラーにならない createStreetLight(["red", "yellow", "green"], "blue"); // defaultColorからCが推論されるのを防ぐ function createStreetLight<C extends string>(colors: C[], defaultColor?: NoInfer<C>) { // ... }
まとめ ・NoInfer→いまいち使い所が思いつかなかった… ・型の絞り込み→役立つが場面ができてきそうだと思った