[
  {
    "start": 0.0,
    "end": 3.2,
    "text": "I believe that for most JavaScript"
  },
  {
    "start": 3.2,
    "end": 6.4,
    "text": "developers, it makes sense to learn"
  },
  {
    "start": 6.4,
    "end": 9.12,
    "text": "TypeScript and they probably should"
  },
  {
    "start": 9.12,
    "end": 12.58,
    "text": "learn TypeScript, though, of course, I'll"
  },
  {
    "start": 12.58,
    "end": 14.76,
    "text": "say it right away in case it isn't obvious,"
  },
  {
    "start": 15.38,
    "end": 16.42,
    "text": "this is just my opinion."
  },
  {
    "start": 16.68,
    "end": 18.54,
    "text": "If you don't like TypeScript, you don't"
  },
  {
    "start": 18.54,
    "end": 21.04,
    "text": "need to use or learn it, but I think there"
  },
  {
    "start": 21.04,
    "end": 23.86,
    "text": "are good reasons for using or learning"
  },
  {
    "start": 23.86,
    "end": 26.88,
    "text": "TypeScript and this is what I'll try to"
  },
  {
    "start": 26.88,
    "end": 28.36,
    "text": "explain over the next minutes."
  },
  {
    "start": 29.44,
    "end": 32.54,
    "text": "And if I take a look at the numbers, the"
  },
  {
    "start": 32.54,
    "end": 35.8,
    "text": "number of people working with"
  },
  {
    "start": 35.8,
    "end": 38.6,
    "text": "TypeScript in the last Stack Overflow"
  },
  {
    "start": 38.6,
    "end": 41.14,
    "text": "survey, for example, and the growth of"
  },
  {
    "start": 41.14,
    "end": 45.12,
    "text": "that number, for example, then I would"
  },
  {
    "start": 45.12,
    "end": 47.6,
    "text": "guess many people would agree."
  },
  {
    "start": 47.86,
    "end": 50.44,
    "text": "It's probably fair to assess that"
  },
  {
    "start": 50.44,
    "end": 54.6,
    "text": "TypeScript is pretty popular and is"
  },
  {
    "start": 54.6,
    "end": 57.42,
    "text": "growing in popularity because otherwise"
  },
  {
    "start": 57.42,
    "end": 60.26,
    "text": "people would probably not be choosing"
  },
  {
    "start": 60.26,
    "end": 64.16,
    "text": "it for their projects or at least it seems to"
  },
  {
    "start": 64.16,
    "end": 66.16,
    "text": "offer substantial advantages."
  },
  {
    "start": 66.82,
    "end": 69.6,
    "text": "Now at the same time, I'm well aware"
  },
  {
    "start": 69.6,
    "end": 75.68,
    "text": "that last year in 2023, we had a period in"
  },
  {
    "start": 75.68,
    "end": 79.96,
    "text": "that year where some big projects were"
  },
  {
    "start": 79.96,
    "end": 82.96,
    "text": "dropping TypeScript and we had a blog"
  },
  {
    "start": 82.96,
    "end": 86.86,
    "text": "post by DHH, the creator of Ruby on"
  },
  {
    "start": 86.86,
    "end": 91.0,
    "text": "Rails, who shared a pretty strong opinion"
  },
  {
    "start": 91.0,
    "end": 94.1,
    "text": "against using TypeScript and why using"
  },
  {
    "start": 94.1,
    "end": 95.34,
    "text": "TypeScript is bad."
  },
  {
    "start": 96.22,
    "end": 98.72,
    "text": "Now just to make sure that we're all on"
  },
  {
    "start": 98.72,
    "end": 101.0,
    "text": "the same page, the idea behind"
  },
  {
    "start": 101.0,
    "end": 103.38,
    "text": "TypeScript, the main idea, the main"
  },
  {
    "start": 103.38,
    "end": 106.48,
    "text": "thing it brings to the table is, of course,"
  },
  {
    "start": 106.68,
    "end": 109.96,
    "text": "that it adds static typing to JavaScript,"
  },
  {
    "start": 110.64,
    "end": 113.34,
    "text": "which in the end means that when you"
  },
  {
    "start": 113.34,
    "end": 116.78,
    "text": "are writing JavaScript code, you can't"
  },
  {
    "start": 116.78,
    "end": 120.08,
    "text": "suddenly change the type of a value"
  },
  {
    "start": 120.08,
    "end": 122.36,
    "text": "that's stored in a variable and you can"
  },
  {
    "start": 122.36,
    "end": 125.82,
    "text": "also, for example, predefine the type that"
  },
  {
    "start": 125.82,
    "end": 128.139,
    "text": "should eventually be stored in a variable."
  },
  {
    "start": 128.68,
    "end": 131.48,
    "text": "You can be clear about the type of value"
  },
  {
    "start": 131.48,
    "end": 134.68,
    "text": "that's expected to be returned by some"
  },
  {
    "start": 134.68,
    "end": 138.42,
    "text": "method or function and in general, the"
  },
  {
    "start": 138.42,
    "end": 141.38,
    "text": "main idea simply is that you can be"
  },
  {
    "start": 141.38,
    "end": 145.92,
    "text": "specific about which type of value goes"
  },
  {
    "start": 145.92,
    "end": 148.8,
    "text": "where in your code and that you can't"
  },
  {
    "start": 148.8,
    "end": 152.64,
    "text": "accidentally use the wrong type of value,"
  },
  {
    "start": 152.8,
    "end": 153.5,
    "text": "for example."
  },
  {
    "start": 154.36,
    "end": 157.34,
    "text": "And it's not just about the wrong type,"
  },
  {
    "start": 157.7,
    "end": 161.14,
    "text": "like a number being used in a place"
  },
  {
    "start": 161.14,
    "end": 163.72,
    "text": "where a string is expected, though that"
  },
  {
    "start": 163.72,
    "end": 164.6,
    "text": "can also be useful."
  },
  {
    "start": 165.06,
    "end": 167.66,
    "text": "It's also about the many places in"
  },
  {
    "start": 167.66,
    "end": 170.52,
    "text": "JavaScript where a value might be"
  },
  {
    "start": 170.52,
    "end": 174.3,
    "text": "undefined or null and you forgot about"
  },
  {
    "start": 174.3,
    "end": 176.66,
    "text": "this scenario when writing your code"
  },
  {
    "start": 176.66,
    "end": 179.3,
    "text": "and therefore suddenly your application,"
  },
  {
    "start": 179.46,
    "end": 181.64,
    "text": "your website crashes when it's running"
  },
  {
    "start": 181.64,
    "end": 185.38,
    "text": "in a certain scenario because such an"
  },
  {
    "start": 185.38,
    "end": 188.0,
    "text": "undefined or null value was received."
  },
  {
    "start": 188.44,
    "end": 191.24,
    "text": "It's cases like this where TypeScript can"
  },
  {
    "start": 191.24,
    "end": 194.14,
    "text": "help you because it makes you aware of"
  },
  {
    "start": 194.14,
    "end": 196.48,
    "text": "such situations during development."
  },
  {
    "start": 196.88,
    "end": 200.58,
    "text": "It tells you if you are using a value in a"
  },
  {
    "start": 200.58,
    "end": 202.68,
    "text": "certain place where it could potentially"
  },
  {
    "start": 202.68,
    "end": 205.62,
    "text": "be undefined so that you can improve"
  },
  {
    "start": 205.62,
    "end": 209.22,
    "text": "your code to handle that scenario where"
  },
  {
    "start": 209.22,
    "end": 212.12,
    "text": "a certain value might be undefined and"
  },
  {
    "start": 212.12,
    "end": 215.76,
    "text": "that can lead to better code, to code that"
  },
  {
    "start": 215.76,
    "end": 218.66,
    "text": "contains fewer bugs and that hopefully"
  },
  {
    "start": 218.66,
    "end": 221.98,
    "text": "doesn't crash at runtime that often."
  },
  {
    "start": 222.4,
    "end": 224.9,
    "text": "So TypeScript really brings some"
  },
  {
    "start": 224.9,
    "end": 227.48,
    "text": "advantages to the table, at least in my"
  },
  {
    "start": 227.48,
    "end": 230.4,
    "text": "opinion and as it seems, as I mentioned"
  },
  {
    "start": 230.4,
    "end": 233.52,
    "text": "initially, also in the opinion of many"
  },
  {
    "start": 233.52,
    "end": 234.26,
    "text": "other developers."
  },
  {
    "start": 235.04,
    "end": 237.28,
    "text": "Now at the same time we had for"
  },
  {
    "start": 237.28,
    "end": 241.66,
    "text": "example dhh dropping TypeScript in his"
  },
  {
    "start": 241.66,
    "end": 244.66,
    "text": "Turbo library because he complained"
  },
  {
    "start": 244.66,
    "end": 247.76,
    "text": "about unnecessary type gymnastics"
  },
  {
    "start": 247.76,
    "end": 251.04,
    "text": "being required when trying to write"
  },
  {
    "start": 251.04,
    "end": 254.42,
    "text": "correct TypeScript code because that's"
  },
  {
    "start": 254.42,
    "end": 255.6,
    "text": "also important."
  },
  {
    "start": 256.18,
    "end": 258.26,
    "text": "You can of course, when working with"
  },
  {
    "start": 258.26,
    "end": 262.76,
    "text": "TypeScript, often take shortcuts and use"
  },
  {
    "start": 262.76,
    "end": 266.62,
    "text": "the any type or the exclamation mark to"
  },
  {
    "start": 266.62,
    "end": 269.48,
    "text": "tell TypeScript that you know that a"
  },
  {
    "start": 269.48,
    "end": 272.86,
    "text": "certain value can't be undefined in that"
  },
  {
    "start": 272.86,
    "end": 275.88,
    "text": "place where TypeScript thinks it could"
  },
  {
    "start": 275.88,
    "end": 276.68,
    "text": "be undefined."
  },
  {
    "start": 277.16,
    "end": 280.92,
    "text": "You can use such shortcuts to avoid"
  },
  {
    "start": 280.92,
    "end": 285.72,
    "text": "writing complex types or extra checks to"
  },
  {
    "start": 285.72,
    "end": 288.12,
    "text": "rule out certain types."
  },
  {
    "start": 288.76,
    "end": 291.24,
    "text": "And it's especially that part where you"
  },
  {
    "start": 291.24,
    "end": 294.12,
    "text": "sometimes might need to write complex"
  },
  {
    "start": 294.12,
    "end": 297.52,
    "text": "types which typically means complex"
  },
  {
    "start": 297.52,
    "end": 300.18,
    "text": "generic types which you really have to"
  },
  {
    "start": 300.18,
    "end": 301.2,
    "text": "learn to get right."
  },
  {
    "start": 302.0,
    "end": 304.58,
    "text": "It's situations like this where you might"
  },
  {
    "start": 304.58,
    "end": 307.84,
    "text": "feel inclined to drop TypeScript because"
  },
  {
    "start": 307.84,
    "end": 311.82,
    "text": "yes, this can be complex and annoying"
  },
  {
    "start": 311.82,
    "end": 316.1,
    "text": "and introduces a new error source"
  },
  {
    "start": 316.1,
    "end": 318.62,
    "text": "because if you get a type wrong, you"
  },
  {
    "start": 318.62,
    "end": 320.84,
    "text": "might start using it incorrectly and you"
  },
  {
    "start": 320.84,
    "end": 323.8,
    "text": "might start using some value incorrectly"
  },
  {
    "start": 323.84,
    "end": 326.14,
    "text": "and in the end it does have a pretty"
  },
  {
    "start": 326.14,
    "end": 329.84,
    "text": "steep learning curve to be able to write"
  },
  {
    "start": 329.84,
    "end": 331.24,
    "text": "good generic types."
  },
  {
    "start": 331.42,
    "end": 333.72,
    "text": "So yes, that can be annoying."
  },
  {
    "start": 334.02,
    "end": 337.94,
    "text": "However, this is mostly a problem library"
  },
  {
    "start": 337.94,
    "end": 340.9,
    "text": "authors will face because if you are"
  },
  {
    "start": 340.9,
    "end": 344.68,
    "text": "writing a library that's meant to be used"
  },
  {
    "start": 344.68,
    "end": 348.02,
    "text": "by other developers in their projects, you"
  },
  {
    "start": 348.02,
    "end": 350.5,
    "text": "might want to use TypeScript to help"
  },
  {
    "start": 350.5,
    "end": 353.22,
    "text": "those developers in case they are using"
  },
  {
    "start": 353.22,
    "end": 356.18,
    "text": "TypeScript in their projects so that your"
  },
  {
    "start": 356.18,
    "end": 358.52,
    "text": "library gives them proper types and"
  },
  {
    "start": 358.52,
    "end": 361.34,
    "text": "works properly in their library."
  },
  {
    "start": 361.62,
    "end": 363.1,
    "text": "So you might want to use TypeScript"
  },
  {
    "start": 363.1,
    "end": 365.58,
    "text": "when writing your library and it's indeed"
  },
  {
    "start": 365.58,
    "end": 368.8,
    "text": "in such situations where you often need"
  },
  {
    "start": 368.8,
    "end": 370.62,
    "text": "to write complex types."
  },
  {
    "start": 370.94,
    "end": 373.36,
    "text": "And the reason for that is that if you're"
  },
  {
    "start": 373.36,
    "end": 376.14,
    "text": "working on a project, not on a library,"
  },
  {
    "start": 376.78,
    "end": 379.46,
    "text": "you often don't need super complex"
  },
  {
    "start": 379.46,
    "end": 383.06,
    "text": "types because you can often rely on type"
  },
  {
    "start": 383.06,
    "end": 385.74,
    "text": "inference and also because you don't"
  },
  {
    "start": 385.74,
    "end": 389.22,
    "text": "need to write very generic abstract"
  },
  {
    "start": 389.22,
    "end": 392.74,
    "text": "functions or value types that can be"
  },
  {
    "start": 392.74,
    "end": 395.06,
    "text": "used in a broad variety of situations."
  },
  {
    "start": 395.66,
    "end": 397.84,
    "text": "Instead you often have one specific"
  },
  {
    "start": 397.84,
    "end": 401.22,
    "text": "situation, one specific place in your code"
  },
  {
    "start": 401.22,
    "end": 404.4,
    "text": "where a certain value is only used in one"
  },
  {
    "start": 404.4,
    "end": 407.18,
    "text": "very specific way and therefore you don't"
  },
  {
    "start": 407.18,
    "end": 409.4,
    "text": "need to set up a super flexible,"
  },
  {
    "start": 409.72,
    "end": 412.68,
    "text": "complicated type to support all other"
  },
  {
    "start": 412.68,
    "end": 414.28,
    "text": "kinds of value types."
  },
  {
    "start": 414.56,
    "end": 416.86,
    "text": "If you're building a library on the other"
  },
  {
    "start": 416.86,
    "end": 418.98,
    "text": "hand, you typically need to do that"
  },
  {
    "start": 418.98,
    "end": 422.34,
    "text": "because you want to offer flexibility in"
  },
  {
    "start": 422.34,
    "end": 425.56,
    "text": "many places so that your library can be"
  },
  {
    "start": 425.56,
    "end": 427.7,
    "text": "used in a broad variety of different"
  },
  {
    "start": 427.7,
    "end": 428.3,
    "text": "projects."
  },
  {
    "start": 429.04,
    "end": 431.96,
    "text": "And therefore indeed if you are writing"
  },
  {
    "start": 431.96,
    "end": 435.92,
    "text": "code for a library, you can have a hard"
  },
  {
    "start": 435.92,
    "end": 438.34,
    "text": "time from time to time when working"
  },
  {
    "start": 438.34,
    "end": 439.36,
    "text": "with TypeScript."
  },
  {
    "start": 440.02,
    "end": 443.16,
    "text": "Now I would argue it's probably still"
  },
  {
    "start": 443.16,
    "end": 446.56,
    "text": "worth it because for one, your library"
  },
  {
    "start": 446.56,
    "end": 448.92,
    "text": "being written in TypeScript of course"
  },
  {
    "start": 448.92,
    "end": 451.06,
    "text": "also gets the benefits of using"
  },
  {
    "start": 451.06,
    "end": 453.52,
    "text": "TypeScript, which for example means"
  },
  {
    "start": 453.52,
    "end": 456.14,
    "text": "that certain errors can probably be"
  },
  {
    "start": 456.14,
    "end": 457.88,
    "text": "caught early and fixed."
  },
  {
    "start": 458.54,
    "end": 460.58,
    "text": "It also means that your library might be"
  },
  {
    "start": 460.58,
    "end": 463.1,
    "text": "more interesting for other developers"
  },
  {
    "start": 463.1,
    "end": 465.46,
    "text": "who are using TypeScript in their"
  },
  {
    "start": 465.46,
    "end": 466.24,
    "text": "projects."
  },
  {
    "start": 466.72,
    "end": 469.38,
    "text": "It might also help with collaboration and"
  },
  {
    "start": 469.38,
    "end": 471.88,
    "text": "finding collaborators because whilst"
  },
  {
    "start": 471.88,
    "end": 474.58,
    "text": "TypeScript could also be an extra hurdle,"
  },
  {
    "start": 475.06,
    "end": 476.98,
    "text": "it might also mean that you're getting"
  },
  {
    "start": 476.98,
    "end": 480.6,
    "text": "higher quality collaborators who help"
  },
  {
    "start": 480.6,
    "end": 482.48,
    "text": "you working on the library."
  },
  {
    "start": 482.9,
    "end": 485.26,
    "text": "But of course ultimately, it is something"
  },
  {
    "start": 485.26,
    "end": 488.0,
    "text": "that's totally up to the library author and"
  },
  {
    "start": 488.0,
    "end": 491.34,
    "text": "I can fully understand if you don't feel"
  },
  {
    "start": 491.34,
    "end": 494.26,
    "text": "like doing all those type gymnastics."
  },
  {
    "start": 494.7,
    "end": 497.5,
    "text": "Though the super important thing here"
  },
  {
    "start": 497.5,
    "end": 501.28,
    "text": "really is that I'm now talking about"
  },
  {
    "start": 501.28,
    "end": 502.22,
    "text": "libraries."
  },
  {
    "start": 503.08,
    "end": 505.32,
    "text": "As I mentioned before, if you are"
  },
  {
    "start": 505.32,
    "end": 508.36,
    "text": "working on some project, on some web"
  },
  {
    "start": 508.36,
    "end": 510.94,
    "text": "application, and you're just using some"
  },
  {
    "start": 510.94,
    "end": 513.059,
    "text": "libraries but you're not writing one"
  },
  {
    "start": 513.059,
    "end": 516.799,
    "text": "yourself, then chances are pretty high"
  },
  {
    "start": 516.799,
    "end": 519.6,
    "text": "that you don't need to write a lot of"
  },
  {
    "start": 519.6,
    "end": 520.74,
    "text": "complex types."
  },
  {
    "start": 521.1,
    "end": 524.26,
    "text": "You might sometimes need a bit of a"
  },
  {
    "start": 524.26,
    "end": 527.48,
    "text": "more complex type here and there, but"
  },
  {
    "start": 527.48,
    "end": 529.92,
    "text": "it's typically not too bad."
  },
  {
    "start": 530.18,
    "end": 532.68,
    "text": "Of course, always depending on the"
  },
  {
    "start": 532.68,
    "end": 535.36,
    "text": "exact project you're working on, on the"
  },
  {
    "start": 535.36,
    "end": 537.5,
    "text": "size of the project and so on."
  },
  {
    "start": 537.82,
    "end": 540.38,
    "text": "But chances are high that you won't"
  },
  {
    "start": 540.38,
    "end": 543.48,
    "text": "have a too hard time when using"
  },
  {
    "start": 543.48,
    "end": 545.52,
    "text": "TypeScript in such a project."
  },
  {
    "start": 546.28,
    "end": 548.6,
    "text": "And that's why I believe that every"
  },
  {
    "start": 548.6,
    "end": 551.76,
    "text": "developer, library authors excluded to"
  },
  {
    "start": 551.76,
    "end": 554.52,
    "text": "some extent, should really consider"
  },
  {
    "start": 554.52,
    "end": 557.2,
    "text": "using TypeScript and learning"
  },
  {
    "start": 557.2,
    "end": 560.08,
    "text": "TypeScript therefore because there are"
  },
  {
    "start": 560.08,
    "end": 563.82,
    "text": "real benefits to be reaped and the price,"
  },
  {
    "start": 564.32,
    "end": 566.74,
    "text": "if you're not one of those library authors,"
  },
  {
    "start": 566.96,
    "end": 570.28,
    "text": "really isn't too high, in my opinion."
  },
  {
    "start": 571.14,
    "end": 573.8,
    "text": "And indeed, the opposite is the case, I"
  },
  {
    "start": 573.8,
    "end": 574.32,
    "text": "would say."
  },
  {
    "start": 574.84,
    "end": 577.88,
    "text": "If you know how to work with TypeScript,"
  },
  {
    "start": 578.56,
    "end": 582.34,
    "text": "you become more employable, both for"
  },
  {
    "start": 582.34,
    "end": 586.0,
    "text": "a fixed employment position but also as"
  },
  {
    "start": 586.0,
    "end": 586.78,
    "text": "a freelancer."
  },
  {
    "start": 587.68,
    "end": 589.36,
    "text": "Because if they're not using TypeScript,"
  },
  {
    "start": 589.78,
    "end": 590.38,
    "text": "that's okay."
  },
  {
    "start": 590.66,
    "end": 592.8,
    "text": "You do know how to work with vanilla"
  },
  {
    "start": 592.8,
    "end": 596.42,
    "text": "JavaScript after all, since TypeScript just"
  },
  {
    "start": 596.42,
    "end": 597.38,
    "text": "builds up on that."
  },
  {
    "start": 597.78,
    "end": 600.36,
    "text": "But if they do use TypeScript, you have"
  },
  {
    "start": 600.36,
    "end": 602.34,
    "text": "an advantage compared to developers"
  },
  {
    "start": 602.34,
    "end": 603.12,
    "text": "who don't."
  },
  {
    "start": 603.54,
    "end": 606.82,
    "text": "So from that perspective, it also makes a"
  },
  {
    "start": 606.82,
    "end": 609.72,
    "text": "lot of sense to learn TypeScript."
  },
  {
    "start": 610.3,
    "end": 613.6,
    "text": "The question then just is how good you"
  },
  {
    "start": 613.6,
    "end": 615.18,
    "text": "have to become at TypeScript."
  },
  {
    "start": 616.32,
    "end": 619.14,
    "text": "You can definitely try to become a"
  },
  {
    "start": 619.14,
    "end": 622.52,
    "text": "TypeScript master who's able to read"
  },
  {
    "start": 622.52,
    "end": 624.86,
    "text": "and understand and most importantly"
  },
  {
    "start": 624.86,
    "end": 628.06,
    "text": "write all the super complex generic"
  },
  {
    "start": 628.06,
    "end": 629.98,
    "text": "types you might sometimes need in"
  },
  {
    "start": 629.98,
    "end": 630.76,
    "text": "certain libraries."
  },
  {
    "start": 631.48,
    "end": 633.68,
    "text": "But chances are that that's not"
  },
  {
    "start": 633.68,
    "end": 636.34,
    "text": "something you have to do because for"
  },
  {
    "start": 636.34,
    "end": 637.9,
    "text": "all the reasons I mentioned before,"
  },
  {
    "start": 638.34,
    "end": 640.54,
    "text": "where if you're not working on a library,"
  },
  {
    "start": 640.88,
    "end": 643.66,
    "text": "you might not need those super"
  },
  {
    "start": 643.8,
    "end": 645.76,
    "text": "complex generic types."
  },
  {
    "start": 646.52,
    "end": 649.42,
    "text": "Now of course, using TypeScript has one"
  },
  {
    "start": 649.42,
    "end": 652.12,
    "text": "other disadvantage besides those"
  },
  {
    "start": 652.12,
    "end": 654.18,
    "text": "complex types you sometimes need to"
  },
  {
    "start": 654.18,
    "end": 654.52,
    "text": "write."
  },
  {
    "start": 655.2,
    "end": 658.48,
    "text": "And that disadvantage is that it's not"
  },
  {
    "start": 658.48,
    "end": 661.3,
    "text": "running in the browser without an extra"
  },
  {
    "start": 661.3,
    "end": 662.56,
    "text": "compilation step."
  },
  {
    "start": 662.94,
    "end": 665.68,
    "text": "So if you're writing TypeScript code, you"
  },
  {
    "start": 665.68,
    "end": 669.5,
    "text": "can't just take that code and upload it to"
  },
  {
    "start": 669.5,
    "end": 671.34,
    "text": "some server and call it a day."
  },
  {
    "start": 672.0,
    "end": 674.52,
    "text": "It will not work once it's been loaded"
  },
  {
    "start": 674.52,
    "end": 676.9,
    "text": "into the browsers of your users."
  },
  {
    "start": 677.58,
    "end": 680.64,
    "text": "And as a side note, that's a bit different if"
  },
  {
    "start": 680.64,
    "end": 683.62,
    "text": "you're using TypeScript for server side"
  },
  {
    "start": 683.62,
    "end": 686.46,
    "text": "code, for example, because indeed there"
  },
  {
    "start": 686.46,
    "end": 689.8,
    "text": "we have solutions like bun, which is a"
  },
  {
    "start": 689.8,
    "end": 692.78,
    "text": "JavaScript and TypeScript runtime or"
  },
  {
    "start": 692.78,
    "end": 696.02,
    "text": "extra packages that indeed do allow you"
  },
  {
    "start": 696.02,
    "end": 699.34,
    "text": "to execute TypeScript code just like that"
  },
  {
    "start": 699.34,
    "end": 701.38,
    "text": "without a compilation step."
  },
  {
    "start": 701.98,
    "end": 703.92,
    "text": "But if you're writing client-side"
  },
  {
    "start": 703.92,
    "end": 706.88,
    "text": "JavaScript code, it won't work just like"
  },
  {
    "start": 706.88,
    "end": 707.22,
    "text": "that."
  },
  {
    "start": 707.48,
    "end": 709.2,
    "text": "And that of course can be a"
  },
  {
    "start": 709.2,
    "end": 711.96,
    "text": "disadvantage if you have maybe a pretty"
  },
  {
    "start": 711.96,
    "end": 714.76,
    "text": "simple project, which otherwise"
  },
  {
    "start": 714.76,
    "end": 719.34,
    "text": "wouldn't require a compilation step and"
  },
  {
    "start": 719.34,
    "end": 721.98,
    "text": "wouldn't require a build tool that"
  },
  {
    "start": 721.98,
    "end": 724.3,
    "text": "compiles your code and optimizes your"
  },
  {
    "start": 724.3,
    "end": 724.66,
    "text": "code."
  },
  {
    "start": 725.32,
    "end": 728.04,
    "text": "Or then you still need one because"
  },
  {
    "start": 728.04,
    "end": 729.04,
    "text": "you're using TypeScript."
  },
  {
    "start": 729.64,
    "end": 732.32,
    "text": "So that need for that extra compilation"
  },
  {
    "start": 732.32,
    "end": 735.42,
    "text": "step and build step, that of course can"
  },
  {
    "start": 735.42,
    "end": 737.42,
    "text": "be annoying in certain situations."
  },
  {
    "start": 738.18,
    "end": 742.34,
    "text": "Now again, my feeling here is, and what"
  },
  {
    "start": 742.34,
    "end": 746.44,
    "text": "I see out there, that for many projects,"
  },
  {
    "start": 746.62,
    "end": 749.64,
    "text": "probably most projects, front-end"
  },
  {
    "start": 749.64,
    "end": 753.3,
    "text": "JavaScript projects, you have a build tool"
  },
  {
    "start": 753.3,
    "end": 755.32,
    "text": "and a build step anyways."
  },
  {
    "start": 755.74,
    "end": 757.74,
    "text": "You're using something like Vite or"
  },
  {
    "start": 757.74,
    "end": 759.4,
    "text": "Webpack anyways."
  },
  {
    "start": 760.12,
    "end": 764.18,
    "text": "And then adding TypeScript shouldn't"
  },
  {
    "start": 764.18,
    "end": 767.1,
    "text": "be a huge deal, to be honest, because"
  },
  {
    "start": 767.1,
    "end": 769.12,
    "text": "you have that process anyways."
  },
  {
    "start": 769.58,
    "end": 771.96,
    "text": "Why not just add in that compilation"
  },
  {
    "start": 771.96,
    "end": 772.64,
    "text": "step?"
  },
  {
    "start": 772.78,
    "end": 775.42,
    "text": "Typically it shouldn't be too complicated."
  },
  {
    "start": 776.32,
    "end": 779.24,
    "text": "So that might be a reason for some"
  },
  {
    "start": 779.24,
    "end": 779.72,
    "text": "people."
  },
  {
    "start": 780.24,
    "end": 783.14,
    "text": "For example, it was a reason for the"
  },
  {
    "start": 783.14,
    "end": 785.94,
    "text": "Svelte team, which also dropped"
  },
  {
    "start": 785.94,
    "end": 789.78,
    "text": "TypeScript and moved to JS docs, which"
  },
  {
    "start": 789.78,
    "end": 791.9,
    "text": "is another way of adding types that does"
  },
  {
    "start": 791.9,
    "end": 795.56,
    "text": "not require a build step, but also isn't as"
  },
  {
    "start": 795.56,
    "end": 797.08,
    "text": "ergonomic in my opinion."
  },
  {
    "start": 797.92,
    "end": 800.54,
    "text": "But it's probably not an argument for"
  },
  {
    "start": 800.54,
    "end": 802.54,
    "text": "many other developers who have a build"
  },
  {
    "start": 802.54,
    "end": 804.54,
    "text": "step, who have a build tool in their"
  },
  {
    "start": 804.54,
    "end": 807.3,
    "text": "project anyways, because there it really"
  },
  {
    "start": 807.3,
    "end": 808.6,
    "text": "doesn't matter too much."
  },
  {
    "start": 808.76,
    "end": 810.76,
    "text": "Typically compilation also doesn't take"
  },
  {
    "start": 810.76,
    "end": 811.52,
    "text": "super long."
  },
  {
    "start": 812.16,
    "end": 814.32,
    "text": "And of course, as I mentioned, we also"
  },
  {
    "start": 814.32,
    "end": 816.36,
    "text": "have situations where you might not"
  },
  {
    "start": 816.36,
    "end": 819.28,
    "text": "need one at all despite using TypeScript."
  },
  {
    "start": 819.4,
    "end": 822.1,
    "text": "If you are, for example, executing your"
  },
  {
    "start": 822.1,
    "end": 825.12,
    "text": "code with a tool or in an environment"
  },
  {
    "start": 825.12,
    "end": 827.96,
    "text": "that natively supports TypeScript,"
  },
  {
    "start": 828.24,
    "end": 830.56,
    "text": "though there you always might want to"
  },
  {
    "start": 830.56,
    "end": 833.72,
    "text": "at least question whether you possibly"
  },
  {
    "start": 833.72,
    "end": 836.18,
    "text": "could have a performance disadvantage"
  },
  {
    "start": 836.18,
    "end": 838.44,
    "text": "by running uncompiled TypeScript."
  },
  {
    "start": 838.62,
    "end": 840.9,
    "text": "That could be a valid concern there and"
  },
  {
    "start": 840.9,
    "end": 842.96,
    "text": "is something you should definitely check"
  },
  {
    "start": 842.96,
    "end": 845.02,
    "text": "and make sure that it isn't."
  },
  {
    "start": 845.08,
    "end": 848.34,
    "text": "But for all those reasons, I do believe"
  },
  {
    "start": 848.34,
    "end": 851.82,
    "text": "that most developers should learn and"
  },
  {
    "start": 851.82,
    "end": 854.26,
    "text": "use TypeScript because learning it"
  },
  {
    "start": 854.26,
    "end": 857.98,
    "text": "honestly isn't too complicated if you"
  },
  {
    "start": 857.98,
    "end": 860.58,
    "text": "don't get into those super complex"
  },
  {
    "start": 860.58,
    "end": 861.94,
    "text": "types, at least initially."
  },
  {
    "start": 862.76,
    "end": 865.08,
    "text": "And therefore, then you just get a lot of"
  },
  {
    "start": 865.08,
    "end": 868.14,
    "text": "benefits, in my opinion, without too"
  },
  {
    "start": 868.14,
    "end": 869.64,
    "text": "much extra work."
  },
  {
    "start": 869.94,
    "end": 872.54,
    "text": "And indeed, once you've worked with"
  },
  {
    "start": 872.54,
    "end": 875.2,
    "text": "TypeScript a bit, you will see that"
  },
  {
    "start": 875.2,
    "end": 878.5,
    "text": "actually you don't have to add too many"
  },
  {
    "start": 878.5,
    "end": 880.8,
    "text": "types in your code base because often"
  },
  {
    "start": 880.8,
    "end": 883.7,
    "text": "you can rely on type inference anyways,"
  },
  {
    "start": 884.38,
    "end": 886.52,
    "text": "and then you just get the benefits"
  },
  {
    "start": 886.52,
    "end": 890.18,
    "text": "almost without any additional extra"
  },
  {
    "start": 890.18,
    "end": 890.62,
    "text": "work."
  },
  {
    "start": 891.24,
    "end": 893.64,
    "text": "And that's why I personally love"
  },
  {
    "start": 893.64,
    "end": 895.72,
    "text": "TypeScript and why I'm using it in"
  },
  {
    "start": 895.72,
    "end": 899.26,
    "text": "essentially all my projects and why I"
  },
  {
    "start": 899.26,
    "end": 901.54,
    "text": "recommend the same for most other"
  },
  {
    "start": 901.54,
    "end": 902.08,
    "text": "developers."
  }
]