mirror of
https://github.com/swc-project/swc.git
synced 2024-11-28 11:13:43 +03:00
36 lines
852 B
TypeScript
36 lines
852 B
TypeScript
// @target: esnext
|
|
// @useDefineForClassFields: true
|
|
|
|
|
|
// With useDefineForClassFields: true and ESNext target, initializer
|
|
// expressions for property declarations are evaluated in the scope of
|
|
// the class body and are permitted to reference parameters or local
|
|
// variables of the constructor. This is different from classic
|
|
// Typescript behaviour, with useDefineForClassFields: false. There,
|
|
// initialisers of property declarations are evaluated in the scope of
|
|
// the constructor body.
|
|
|
|
// Note that when class fields are accepted in the ECMAScript
|
|
// standard, the target will become that year's ES20xx
|
|
|
|
var x = 1;
|
|
class C {
|
|
b = x; // ok
|
|
constructor(x: string) {
|
|
}
|
|
}
|
|
|
|
var y = 1;
|
|
class D {
|
|
b = y; // ok
|
|
constructor(x: string) {
|
|
var y = "";
|
|
}
|
|
}
|
|
|
|
class E {
|
|
b = z; // not ok
|
|
constructor(z: string) {
|
|
}
|
|
}
|