Allow pass through of class-properties · Issue #12212 · microsoft/TypeScript (original) (raw)

TypeScript Version:

Description
I expect Typescript to more or less only strip types but preserve the rest - based on the target compilerOption. Especially when using a target like es2017 or even esnext.

Class-properties are always moved into the constructor. This prevents hot-reloading of class-property functions when using react-hot-loader 3.

Using them is a common pattern for binding event-handler functions to this without having to do this for every method in the constructor.

Code

class MyClass { prop1: number = 123; handleClick = () => { console.log('Click handled'); } render() { return Click me; } }

Expected emit:

class MyClass { prop1 = 123; handleClick = () => { console.log('Click handled'); } render() { return Click me; } }

Actual emit:

class MyClass { constructor() { super(...arguments); this.prop1 = 123; this.handleClick = () => { console.log('Click handled'); }; } render() { return Click me; } }