microsoft / microsoft/TypeScript

public static fields without initializer are removed even with `useDefineForClassFields=true`

Đang mở
#61,671 0 bình luận 0 reaction 1 người được giao Được @rbuckton nhận Xem trên GitHub
Needs Investigation
Ngôn ngữ chính
Go
Star
111k
Fork
14.3k
Merge trung bình
2 ngày 4 giờ
Pull request đã merge (30 ngày)
132

Mô tả

### 🔎 Search Terms

static class field, useDefineForClassFields

### 🕗 Version & Regression Information

This bug exists at least with v3.7.5 and v5.8.3.

### ⏯ Playground Link

https://www.typescriptlang.org/play/?useDefineForClassFields=true&jsx=0&ts=5.8.3#code/MYGwhgzhAEBiD29oG8BQ1oQC5iwS2GgDNEAuaAVwDsATAUyLyrpoG5V1ph4rsAnCsCzw+ACgCUKThm694IOgDoQ8AOaiA5CXgboTOInGcAvqlPMA7gfgTUQA

### 💻 Code

```ts
class Foo {
static foo: undefined;

constructor() {
console.log('foo' in Foo)
}
}
new Foo()
```

### 🙁 Actual behavior

`console.log('foo' in Foo)` outputs `false` after transformed.

### 🙂 Expected behavior

`console.log('foo' in Foo)` to output `true` after transformed. Because removing `: undefined` from the input and running that outputs `true`.

### Additional information about the issue

esbuild, babel, SWC transforms correctly ([esbuild try](https://esbuild.github.io/try/#dAAwLjI1LjQAewogIGxvYWRlcjogJ3RzJywKICB0YXJnZXQ6ICdlczIwMTcnLAogIHRzY29uZmlnUmF3OiB7CiAgICBjb21waWxlck9wdGlvbnM6IHsKICAgICAgdXNlRGVmaW5lRm9yQ2xhc3NGaWVsZHM6IHRydWUKICAgIH0KICB9Cn0AY2xhc3MgRm9vIHsKICBzdGF0aWMgZm9vOiB1bmRlZmluZWQ7CgogIGNvbnN0cnVjdG9yKCkgewogICAgY29uc29sZS5sb2coJ2ZvbycgaW4gRm9vKQogIH0KfQpuZXcgRm9vKCkK), [babel repl](https://babeljs.io/repl#?browsers=chrome%2073&build=&builtIns=false&corejs=3.21&spec=false&loose=false&code_lz=MYGwhgzhAEBiD29oG8BQ1oQC5iwS2GgDNEAuaAVwDsATAUyLyrpoG5V1ph4rsAnCsCzw-ACgCUKThm694IOgDoQ8AOaiA5CXgboTOInGcAvqlPMA7gfgTUQA&forceAllTransforms=false&modules=false&shippedProposals=false&evaluate=false&fileSize=false&timeTravel=false&sourceType=module&lineWrap=false&presets=env%2Ctypescript&prettier=false&targets=&version=7.25.8&externalPlugins=&assumptions=%7B%7D), [SWC playground](https://play.swc.rs/?version=1.11.24&code=H4sIAAAAAAAAAyWMsQ3AIAwEe0%2FhDmgyQNJnDwQmQkK2BEYpInYPJOX%2F3X8ovjU8RfABxKZec8AksmPnSCkzxQMmCcJNaw8q1brP%2FTsptBW5rJkbg5nXlZt0wACme0Xr4AUZI7P%2BZgAAAA%3D%3D&config=H4sIAAAAAAAAA1VQu27DMAzc%2FRWG5qBuO6RA1hbZMvULCIVOVOgFkgJqBP73SLbl2Jt4D554j6Zt1R9rdWof%2BZmHCMRI65wRHrzAf0aUDBFZk4miDpUVLlQPlnGCxplRAnRDKS7kz%2FePL1VxAs99ILeNSIw%2F2BuP50DfFpjPBu2Vs0Qo4ZpFCFo2vgwZFwPJb0iksYTdRSKfug7ZvfG9i7Pl8DJQ8mLcpIUkwYEYrRZ63F1gQ2Csty2YM970w%2FbrOrgcwrwXFin4m8V9N82yXblwTRO5tF6anbs6qpeohq2LleFLdZZmmvEJlbcmOcEBAAA%3D))

Private static fields works fine ([TS playground](https://www.typescriptlang.org/play/?useDefineForClassFields=true&jsx=0&ts=5.8.3#code/MYGwhgzhAEBiD29oG8BQ1oQC5iwS2GgGIAjMAJwC5oBXAOwBMBTAMzzqYYG5V1ph4dbORrAs8cgAoAlCj4YBQ+CCYA6EPADmk0hWjs4iaXwC+qMxwDuh+DNRA)).

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.