The past 2 TSConf keynotes have had this same slide and I thought it might be fun to look at each of these aspects of @typescript one by one. 
(you can see @ahejlsberg present the slide here in 2020 and in 2019)

(you can see @ahejlsberg present the slide here in 2020 and in 2019)
Erasable - with a few exceptions the extra syntax TS adds onto JS leaves no trace in the generated JS, it is completely erased. TS does not make any additional type information available at runtime or use type information to improve the generated JS
https://www.typescriptlang.org/play?removeComments=true#code/PTAEBUGVQdwSwDYNAQwCZtHAdqARAK4DOApqEQC4BOcAxhXqAEYCeoaJAZigRQLAAoQTgokq3WmUjUcAcwAKVAPYAHUAG9BobSuUqAXORnZZAbkEBfQYM4Fs9OEtyySFRaoAUKKrMPSaJu4qAJSGlAGyGlqgVK4EVLjesgB0uqrmAlZCArROREoIJMkISrIe-nJBwaAgoABS0AAWKESg2EqotJJErRQdUIJAA
https://www.typescriptlang.org/play?removeComments=true#code/PTAEBUGVQdwSwDYNAQwCZtHAdqARAK4DOApqEQC4BOcAxhXqAEYCeoaJAZigRQLAAoQTgokq3WmUjUcAcwAKVAPYAHUAG9BobSuUqAXORnZZAbkEBfQYM4Fs9OEtyySFRaoAUKKrMPSaJu4qAJSGlAGyGlqgVK4EVLjesgB0uqrmAlZCArROREoIJMkISrIe-nJBwaAgoABS0AAWKESg2EqotJJErRQdUIJAA
(not) Erasable - enums, JSX, namespaces, parameter properties and decorators are all non standard syntax that is transformed into JS instead of being erased. TS hasnât added any more non-erasable features since 2015.
https://www.typescriptlang.org/play?noEmitHelpers=true#code/PTAEFMDsFcFsGcBcBYAUGqdQFFQG81QiBDUAXlAEYAGAGkKICNzQAme1AXzTQGMB7SPAAuEGLByt8DUKQrYAdKQBUynAsZpu6VABtwogB4tsrJQG4eqEGhChIxWOHgAHYr2codDp6-fhQAFkATwAZAEtGACdiKODpVCIIQxd+KNEBIVEAN3Ao+HDBFhpqSy4rTPh+fQVdfgBzAAoQiOjY4IVc-MLIAEoy22BB0DcYp2E8kaj+FzzhcM8K3WJ4eFAAMX5+BKTK4SjoXmE0xpdoRl1w3lBDRFARKPDIet78bW1B4YApAGUADS84VgqXSoDUK1AACVwO5RAAzaYSADkURhRyRZX0ogCFAAPAATcLZAB8AAlwLo6rjgISSQNrEMGclZo8nJBhMRdKB8eABDFjvkvGgAAI8vnECaNXp8ZarUAAIViOyIot5aQl4Bk4wAFvx8VKEjJ3mgxctUaBskqxeqJndiJBgmUgA
https://www.typescriptlang.org/play?noEmitHelpers=true#code/PTAEFMDsFcFsGcBcBYAUGqdQFFQG81QiBDUAXlAEYAGAGkKICNzQAme1AXzTQGMB7SPAAuEGLByt8DUKQrYAdKQBUynAsZpu6VABtwogB4tsrJQG4eqEGhChIxWOHgAHYr2codDp6-fhQAFkATwAZAEtGACdiKODpVCIIQxd+KNEBIVEAN3Ao+HDBFhpqSy4rTPh+fQVdfgBzAAoQiOjY4IVc-MLIAEoy22BB0DcYp2E8kaj+FzzhcM8K3WJ4eFAAMX5+BKTK4SjoXmE0xpdoRl1w3lBDRFARKPDIet78bW1B4YApAGUADS84VgqXSoDUK1AACVwO5RAAzaYSADkURhRyRZX0ogCFAAPAATcLZAB8AAlwLo6rjgISSQNrEMGclZo8nJBhMRdKB8eABDFjvkvGgAAI8vnECaNXp8ZarUAAIViOyIot5aQl4Bk4wAFvx8VKEjJ3mgxctUaBskqxeqJndiJBgmUgA
Gradual - A TS program with missing types or type errors can still be converted into JS and run. This helps when introducing TS into an existing JS codebase, or when quickly trying out an idea.
https://www.typescriptlang.org/play?noImplicitAny=false&removeComments=true#code/PTAEFpQOwewUQLYEsAuB5KcBOWZYFygBmAhgDYDOApgLABQIE0MAkggA5lIDGqAglACehUpVp169IgFco3FEhhRQAcyooAyiixIoKgBQksKgJSEK23StABveqFBZ10rMqMqAdCkHsqG7jrsKAD6JBQU0ghUFMEoABZIMVQAHokoFPomANz0AL70QA
https://www.typescriptlang.org/play?noImplicitAny=false&removeComments=true#code/PTAEFpQOwewUQLYEsAuB5KcBOWZYFygBmAhgDYDOApgLABQIE0MAkggA5lIDGqAglACehUpVp169IgFco3FEhhRQAcyooAyiixIoKgBQksKgJSEK23StABveqFBZ10rMqMqAdCkHsqG7jrsKAD6JBQU0ghUFMEoABZIMVQAHokoFPomANz0AL70QA
Structural - When checking compatibility of types, TS looks at the structure. As opposed to ânominalâ type systems that look at the name. Structural comparisons take longer but fits closer to how JavaScript works.
https://www.typescriptlang.org/play?#code/MYGwhgzhAEAK4E8CmAnAgtA3tYB7AdhAC4oCuwRuKAFAA6kBGIAlsNKRKvmALZIBc0Yimb4A5gEosAX2jSAUKEgx4YZCgBCWHAWHlKNek1btOKbn0HDRkmXMXgocRKgDC2vIRL6qdRizYLASESGylMWQV5ADNSfApmAmhaEXwiVXU6QQzUNHD5aEKdQlwQJAA6EFwxOnKOLl4kCXkolNF0lxp8JAB3ZzVc6gAiNACkIYkJAG4i+Ta0nK7e-vUNYY1cBgnp6AB6XegAE2Zo6NQkNJxHGAZSImh8XGhUFCoAGhCyClIUJBgeMBEYAACzmqQ6AyWfUWrmGrmBYBQLHGkxm+2eKFeKGSr1oqCICGgAHJ6uZGkToMx-lSIDZ5EA
https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS40LjIwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsImpzQ29kZSI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiY2xhc3MgUGxheWVyQSBjb25zdHJ1Y3Rvcih2YXIgdXNlcm5hbWU6IFN0cmluZykge31cbmNsYXNzIFBsYXllckIgY29uc3RydWN0b3IodmFyIHVzZXJuYW1lOiBTdHJpbmcpIHt9XG5cbmZ1biBwcmludFBsYXllcihwOiBQbGF5ZXJBKSB7XG4gICAgcHJpbnRsbihwLnVzZXJuYW1lKVxufVxuXG5mdW4gbWFpbigpIHtcbiAgcHJpbnRQbGF5ZXIoUGxheWVyQShcIkFsaWNlXCIpKTsgICBcbiAgcHJpbnRQbGF5ZXIoUGxheWVyQihcIkJvYlwiKSk7ICAgXG59XG5cbiJ9
https://www.typescriptlang.org/play?#code/MYGwhgzhAEAK4E8CmAnAgtA3tYB7AdhAC4oCuwRuKAFAA6kBGIAlsNKRKvmALZIBc0Yimb4A5gEosAX2jSAUKEgx4YZCgBCWHAWHlKNek1btOKbn0HDRkmXMXgocRKgDC2vIRL6qdRizYLASESGylMWQV5ADNSfApmAmhaEXwiVXU6QQzUNHD5aEKdQlwQJAA6EFwxOnKOLl4kCXkolNF0lxp8JAB3ZzVc6gAiNACkIYkJAG4i+Ta0nK7e-vUNYY1cBgnp6AB6XegAE2Zo6NQkNJxHGAZSImh8XGhUFCoAGhCyClIUJBgeMBEYAACzmqQ6AyWfUWrmGrmBYBQLHGkxm+2eKFeKGSr1oqCICGgAHJ6uZGkToMx-lSIDZ5EA
https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS40LjIwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsImpzQ29kZSI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiY2xhc3MgUGxheWVyQSBjb25zdHJ1Y3Rvcih2YXIgdXNlcm5hbWU6IFN0cmluZykge31cbmNsYXNzIFBsYXllckIgY29uc3RydWN0b3IodmFyIHVzZXJuYW1lOiBTdHJpbmcpIHt9XG5cbmZ1biBwcmludFBsYXllcihwOiBQbGF5ZXJBKSB7XG4gICAgcHJpbnRsbihwLnVzZXJuYW1lKVxufVxuXG5mdW4gbWFpbigpIHtcbiAgcHJpbnRQbGF5ZXIoUGxheWVyQShcIkFsaWNlXCIpKTsgICBcbiAgcHJpbnRQbGF5ZXIoUGxheWVyQihcIkJvYlwiKSk7ICAgXG59XG5cbiJ9
(not) Structural - enums are an exception. When comparing two enums in TS they are checked by name.
https://www.typescriptlang.org/play?#code/HYQwtgpgzgDiDGEAEBBJBvAsAKCXpEAHjAPYBOALgcAK5hIAiAlmRPBUycBjvn0gDlyFABYAaJAGUSNURICiIKBQkB1aBV74Avjl3YcoSLATIAQj1z4ipStTqMWbDl0v98QyuKky5SRcpqGlp4+iEExML29Mys7JzAAExu7oLC3tKy3gEqSOrK4fph2ABmNMDxrmAkAG4QABQAJgBcqAB0sc4JAJQYxdV19SgdTpXAbZ6i3QDcOAMNAJxLywszSAD060gAKpJIFKwgFFBItGAARhBkJ0pI8CRgcBwg5wA2yADuTKKndFdM8GiUDmtQaZhGcRc40mIjWmyQjSYJRKVwgwCoaLoEig4GQUBEIBgEGxuNOpIAvJSkAB5ADSIMG4M6Y0SE3ScK2iORqPR0RJkCQ+MJxIRSJRrF5RmQlPJBDIZHIOCAA
https://www.typescriptlang.org/play?#code/HYQwtgpgzgDiDGEAEBBJBvAsAKCXpEAHjAPYBOALgcAK5hIAiAlmRPBUycBjvn0gDlyFABYAaJAGUSNURICiIKBQkB1aBV74Avjl3YcoSLATIAQj1z4ipStTqMWbDl0v98QyuKky5SRcpqGlp4+iEExML29Mys7JzAAExu7oLC3tKy3gEqSOrK4fph2ABmNMDxrmAkAG4QABQAJgBcqAB0sc4JAJQYxdV19SgdTpXAbZ6i3QDcOAMNAJxLywszSAD060gAKpJIFKwgFFBItGAARhBkJ0pI8CRgcBwg5wA2yADuTKKndFdM8GiUDmtQaZhGcRc40mIjWmyQjSYJRKVwgwCoaLoEig4GQUBEIBgEGxuNOpIAvJSkAB5ADSIMG4M6Y0SE3ScK2iORqPR0RJkCQ+MJxIRSJRrF5RmQlPJBDIZHIOCAA
Generic - types in TS can include placeholders where specifying that part is deferred. This also allows the type to be reused in slightly different situations. Other languages like âgoâ did not include support for generics but have since changed direction.
https://www.typescriptlang.org/play?#code/JYOwLgpgTgZghgYwgAgOIRNYCAKUD2ADgDwAqAfMgN4CwAUMo4QYQFzKkDc9AvvfTACuIBGGD4QyAOYQweImXIAKOFCnt0mKNnkkKASnalq9RlFmCok1VIB0zItzp86QA
https://www.typescriptlang.org/play?#code/JYOwLgpgTgZghgYwgAgOIRNYCAKUD2ADgDwAqAfMgN4CwAUMo4QYQFzKkDc9AvvfTACuIBGGD4QyAOYQweImXIAKOFCnt0mKNnkkKASnalq9RlFmCok1VIB0zItzp86QA
Inferable - It is not required that all symbols have their type written next to it. TS can use existing information to determine the type. The âas constâ syntax can be used to switch TS into inferring a narrower type for a literal value.
https://www.typescriptlang.org/play?#code/JYOwLgpgTgZghgYwgAgOIRNYCAKUD2ADgDwAqAfMgN4CwAUMo4QYQFzKkDc9AvvfTACuIBGGD4QyAOYQweImXIAKOFCnt0mKNnkkKASnalq9RlFmCok1VIB0zItzp869ADazkAD2QBeabK6SlTIDmzIANoAjAA0yABMcQDMALrIPPpO7p4Ann4BcizBoSzs0XGJyKnIcADOyAgStWDpmfRAA
https://www.typescriptlang.org/play?#code/JYOwLgpgTgZghgYwgAgOIRNYCAKUD2ADgDwAqAfMgN4CwAUMo4QYQFzKkDc9AvvfTACuIBGGD4QyAOYQweImXIAKOFCnt0mKNnkkKASnalq9RlFmCok1VIB0zItzp869ADazkAD2QBeabK6SlTIDmzIANoAjAA0yABMcQDMALrIPPpO7p4Ann4BcizBoSzs0XGJyKnIcADOyAgStWDpmfRAA
(not) Inferable - There are times where TypeScript still requires explicit type annotation, when other languages like @flowtype will still perform inference.
https://www.typescriptlang.org/play?noImplicitAny=false#code/PTAEDsHsEkFsAcA2BLAxsgLgQXATwLwBmAhogM4CmAsAFC0igAKxATsbBRhS6AOTG9QxcABM+AI0HIEKdBkS5QAC2IA3CqAxKN-PIIy54FAHS1CAV3CoMySOCEiRARgAUxADShxASlABvWlAg0BZOcxZ7YlAAai8AbloAX1paYkdXABYABk8AJm8EmjTnFwBtJzzPAGYAXU8MgtAGKFBuFkgeEU4KawoRFJoGAFoR0bHxicmp6ZnZmYGLKxs7BxFctwAuCHNYcW5PcS3wHb2WXwCaYJCwiKEY+KSB4vXsvILUx3XyytBa+saGABRFjtFgAQlAWBYAHMdhRwBhQJBCJpDDpjrtuKUalIyBBIIjiGQyMhoeBiOJEBoMJBQPBWOxujxkaijHwMadeLQgA
https://flow.org/try/#0FAMwrgdgxgLglgewgAgIYBN0EYAUqA0yARgJTIDewy1yATgKYxi0qrIDUxA3MgPS9oANoOQwAngAd6AZ2RwIIerQbpCEBMiW0EtacAC+wYBmw4ALAAZCAJhJcj-ZAFoXrt+4+ev3n759HwaHgkNExrPEJSCioaBiYWNA5uPgFUYVFJGTkFLXpVZHRGelhZLR1iVGk85BCwaVQAc3piekEEAHcDIxNwgG0sG0IAZgBdQjM7IyA
https://www.typescriptlang.org/play?noImplicitAny=false#code/PTAEDsHsEkFsAcA2BLAxsgLgQXATwLwBmAhogM4CmAsAFC0igAKxATsbBRhS6AOTG9QxcABM+AI0HIEKdBkS5QAC2IA3CqAxKN-PIIy54FAHS1CAV3CoMySOCEiRARgAUxADShxASlABvWlAg0BZOcxZ7YlAAai8AbloAX1paYkdXABYABk8AJm8EmjTnFwBtJzzPAGYAXU8MgtAGKFBuFkgeEU4KawoRFJoGAFoR0bHxicmp6ZnZmYGLKxs7BxFctwAuCHNYcW5PcS3wHb2WXwCaYJCwiKEY+KSB4vXsvILUx3XyytBa+saGABRFjtFgAQlAWBYAHMdhRwBhQJBCJpDDpjrtuKUalIyBBIIjiGQyMhoeBiOJEBoMJBQPBWOxujxkaijHwMadeLQgA
https://flow.org/try/#0FAMwrgdgxgLglgewgAgIYBN0EYAUqA0yARgJTIDewy1yATgKYxi0qrIDUxA3MgPS9oANoOQwAngAd6AZ2RwIIerQbpCEBMiW0EtacAC+wYBmw4ALAAZCAJhJcj-ZAFoXrt+4+ev3n759HwaHgkNExrPEJSCioaBiYWNA5uPgFUYVFJGTkFLXpVZHRGelhZLR1iVGk85BCwaVQAc3piekEEAHcDIxNwgG0sG0IAZgBdQjM7IyA
Expressive - The breadth of ideas that can be represented. With TSâs mission to support the existing JS ecosystem, it has had to rapidly become powerful enough to express a wide range of very dynamic patterns found in JS. Ending up being Turing Complete.
https://www.typescriptlang.org/play?#code/PTAEDECcHsFtQIYBMkEsB2BzUAHGOBnUAF2lGgCMArAUwGNiCBYAKADMBXdB1adRFAAV8AHgDy1ADShh0HKBoAPYjXRIiBYpAyZpANQQAbDjQB8AClahy1AFygJVaXjn3ZOaQDcjJ+weM0rACU9o6gAGSgAN6gANoA1jQAnqAYMvgAun4+NKAAvtFWoIY0xKDoNADu7qAAvNGxLjhZoN4BBQhEUQnJqfzuLf4meQDcRZClHJD8UQB085ROoPOzFdX4o6x5rKwlZYp1Akju5jEI9gCM0hT2AOQATLf50rdr7gByCLA0t9KxAMwZIJjFiKWYIEFgiiQ1ZVD5fGgg1ggEhkWAIdCoHAcQwIYg6UCabRYZgsPagOiHCaeGiQAg0ADKWh05luCAodCQNDYmAAFrdgTsWMQkjhcgAlGg0umM5lYEQMhTKVTqQlyzCmIr1RVKFRqIi3W5FawAflAhuNoHsOuV+tAAAMACRRDBsWmgADCvIQkDyztd7sl6IwOjy9stpodzsl0vpTOJmBEQYQIawpj9US9PrDEat5tuSPYXB4fFA1NpcfVCqVetVRJ0FgI1qChRY1gmxCm-AIswIOEMqGIrIFs3LMvMQVmVGgGGHLc6oBjFdlCYVphB2xYQA
https://www.typescriptlang.org/play?#code/PTAEDECcHsFtQIYBMkEsB2BzUAHGOBnUAF2lGgCMArAUwGNiCBYAKADMBXdB1adRFAAV8AHgDy1ADShh0HKBoAPYjXRIiBYpAyZpANQQAbDjQB8AClahy1AFygJVaXjn3ZOaQDcjJ+weM0rACU9o6gAGSgAN6gANoA1jQAnqAYMvgAun4+NKAAvtFWoIY0xKDoNADu7qAAvNGxLjhZoN4BBQhEUQnJqfzuLf4meQDcRZClHJD8UQB085ROoPOzFdX4o6x5rKwlZYp1Akju5jEI9gCM0hT2AOQATLf50rdr7gByCLA0t9KxAMwZIJjFiKWYIEFgiiQ1ZVD5fGgg1ggEhkWAIdCoHAcQwIYg6UCabRYZgsPagOiHCaeGiQAg0ADKWh05luCAodCQNDYmAAFrdgTsWMQkjhcgAlGg0umM5lYEQMhTKVTqQlyzCmIr1RVKFRqIi3W5FawAflAhuNoHsOuV+tAAAMACRRDBsWmgADCvIQkDyztd7sl6IwOjy9stpodzsl0vpTOJmBEQYQIawpj9US9PrDEat5tuSPYXB4fFA1NpcfVCqVetVRJ0FgI1qChRY1gmxCm-AIswIOEMqGIrIFs3LMvMQVmVGgGGHLc6oBjFdlCYVphB2xYQA
Object-oriented - Direct support for common OO patterns such as abstract classes and behaviors like the dynamic nature of âthisâ
https://www.typescriptlang.org/play?useDefineForClassFields=true&target=99#code/IYIwzgLgTsDGEAJYBthjAgggOwJYFthkEBvAWACgEEAHKAewgFN4mATBUSGeBMegK7Y2ALj7Rc2AOYBuSpWqEA1kwDKg4QAoAlGIgALXBnJVqSetn7ImAOmT0pmg0Zv8hbbXNPUoTCAKhsBGcwL2oAX0pIikoUNAwAEQcEJgAPZmEMHAIiUgU+DQ4AXgQAcgB3enoAM1KvfPKiJR0873NLems7B00KptLtfOjoymtEGj8EEuwmcoQkx09KCYgbZTVCnRtG5GbPBAB6A4QAFVVgniUMA2BEdfV3FvLcZGJff0DggE8JsoXShDYRhlbKEZClShAA
https://www.typescriptlang.org/play?useDefineForClassFields=true&target=99#code/IYIwzgLgTsDGEAJYBthjAgggOwJYFthkEBvAWACgEEAHKAewgFN4mATBUSGeBMegK7Y2ALj7Rc2AOYBuSpWqEA1kwDKg4QAoAlGIgALXBnJVqSetn7ImAOmT0pmg0Zv8hbbXNPUoTCAKhsBGcwL2oAX0pIikoUNAwAEQcEJgAPZmEMHAIiUgU+DQ4AXgQAcgB3enoAM1KvfPKiJR0873NLems7B00KptLtfOjoymtEGj8EEuwmcoQkx09KCYgbZTVCnRtG5GbPBAB6A4QAFVVgniUMA2BEdfV3FvLcZGJff0DggE8JsoXShDYRhlbKEZClShAA
Functional - TS has the ability to infer the type of inline function expressions and manipulate function types, supporting many common functional programming patterns.
https://www.typescriptlang.org/play?#code/C4TwDgpgBAYgrgOwDwEEA0UBCA+KBeKACgEMAuKFASn10wG4oBYAKBYHo2oBjAewFswPAM4BLBAHMWAM0RdgIngm79BQiKgyYMAYWyEWUKFICM5eMnRZsaA0YBMZxEi1RdLSo4s7cAb1sAnCGA4fyUSajxcKTtCE3DKOhYAXxYWABsgqAgANwgEAGVgfzFxfGUBYQhCQgAPciEikojcMGJ-NQBJBGBaygwlSKglAFIoO3w8AgAGBNTmDOAoQKE4NOBjMpy8wuKJQgByYyn92dZmDm4Q-xAS9MziABMHspJyBDg+ACMIfwxPt4+338zSgxCgAGooJ9EmcFqCnhsCI8HgA6T5iB6Ed5pNIYYynO6LRQQAASiAegWeSIRhAAnLTTkA
https://www.typescriptlang.org/play?#code/C4TwDgpgBAYgrgOwDwEEA0UBCA+KBeKACgEMAuKFASn10wG4oBYAKBYHo2oBjAewFswPAM4BLBAHMWAM0RdgIngm79BQiKgyYMAYWyEWUKFICM5eMnRZsaA0YBMZxEi1RdLSo4s7cAb1sAnCGA4fyUSajxcKTtCE3DKOhYAXxYWABsgqAgANwgEAGVgfzFxfGUBYQhCQgAPciEikojcMGJ-NQBJBGBaygwlSKglAFIoO3w8AgAGBNTmDOAoQKE4NOBjMpy8wuKJQgByYyn92dZmDm4Q-xAS9MziABMHspJyBDg+ACMIfwxPt4+338zSgxCgAGooJ9EmcFqCnhsCI8HgA6T5iB6Ed5pNIYYynO6LRQQAASiAegWeSIRhAAnLTTkA