TypeScript can help avoid common bugs by type-checking the code. It can use the type system to help write code faster.
TypeScript's type system is complex. Its type-checking performance is a challenge.
TypeScript can parse JSDoc comments into type annotations.
TypeScript has structural types, in contrast with Java (which has nominal types): interfaces are assertions about the shape of an object, rather than things themselves.
allowSyntheticDefaultImportsallows to use modules which don't define default exports