Skip to content

Commit 2ab1b8a

Browse files
authored
fix(ts/fast-dts): strip definite assertions in dts (#11858)
**Description:** This PR aligns isolated declaration emit with tsc for definite assignment assertions on class members. Definite assertions are stripped from class fields and auto-accessors, and public auto-accessor visibility is normalized away in generated d.ts output. **Related issue:** Related to #11850
1 parent 591012b commit 2ab1b8a

4 files changed

Lines changed: 37 additions & 3 deletions

File tree

.changeset/yellow-walls-itch.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
swc_core: patch
3+
swc_typescript: patch
4+
---
5+
6+
fix(typescript): strip definite assertions in dts

crates/swc_typescript/src/fast_dts/class.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -239,14 +239,14 @@ impl FastDts {
239239
.is_some_and(|accessibility| accessibility == Accessibility::Private)
240240
{
241241
auto_accessor.decorators.clear();
242-
auto_accessor.definite = false;
243242
auto_accessor.type_ann = None;
244-
auto_accessor.accessibility =
245-
self.transform_accessibility(auto_accessor.accessibility);
246243
}
247244

245+
auto_accessor.definite = false;
248246
auto_accessor.is_override = false;
249247
auto_accessor.value = None;
248+
auto_accessor.accessibility =
249+
self.transform_accessibility(auto_accessor.accessibility);
250250
class.body.push(member);
251251
}
252252
ClassMember::Empty(_) | ClassMember::StaticBlock(_) => {}
@@ -475,6 +475,7 @@ impl FastDts {
475475
}
476476

477477
prop.declare = false;
478+
prop.definite = false;
478479
prop.decorators.clear();
479480
prop.accessibility = self.transform_accessibility(prop.accessibility);
480481
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
```==================== .D.TS ====================
2+
3+
export declare class DefiniteFields {
4+
publicField: string;
5+
protected protectedField: number;
6+
private privateField;
7+
readonly readonlyField: string;
8+
}
9+
export declare class DefiniteAccessors {
10+
accessor publicAccessor: string;
11+
protected accessor protectedAccessor: number;
12+
private accessor privateAccessor;
13+
}
14+
15+
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
export class DefiniteFields {
2+
public publicField!: string;
3+
protected protectedField!: number;
4+
private privateField!: boolean;
5+
readonly readonlyField!: string;
6+
}
7+
8+
export class DefiniteAccessors {
9+
public accessor publicAccessor!: string;
10+
protected accessor protectedAccessor!: number;
11+
private accessor privateAccessor!: boolean;
12+
}

0 commit comments

Comments
 (0)