microsoft / microsoft/TypeScript

[isolatedDeclarations] Optional parameter properties are unnecessarily disallowed in isolatedDeclarations mode

Đang mở
#61,501 1 bình luận 2 reaction 1 người được giao Xem trên GitHub

@weswigham đang làm issue này rồi.

Từ ngày 28/3/2025.

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

optional parameter properties, isolated declarations, TS9025: Declaration emit for this parameter requires implicitly adding undefined to its type. This is not supported with --isolatedDeclarations

🕗 Version & Regression Information
  • This was present since the introduction of isolatedDeclarations in TS5.5
⏯ Playground Link

https://www.typescriptlang.org/play/?downlevelIteration=true&importHelpers=true&target=99&module=1&isolatedDeclarations=true&ts=5.8.2&ssl=6&ssc=2&pln=1&pc=1#code/C4TwDgpgBAsghiARhAqgOwCYQGYEs0QZQC8UaArgLbIBOUAPlOZjvoQNwBQokUAchABuEGuix4CRUhWoiunCAA8wAexrAoAYwA2cAM56oAMRUqoAb05RrWlWj3Aa5TcDUAKGhDgY72kFEUAfgAuWARkMVZJABooT29ffxAQ-iERSIlCAEoLAF9OXKA

💻 Code
type MaybeUndefined = number | undefined;
type NeverUndefined = number;

export class Foo {
    constructor(readonly x?: MaybeUndefined, readonly y?: NeverUndefined) {}
}
🙁 Actual behavior

Gives an error:

Declaration emit for this parameter requires implicitly adding undefined to its type. This is not supported with --isolatedDeclarations.

🙂 Expected behavior

It seems like this could be safely supported by just always emitting the class fields with a type of |undefined whether that was redundant or not, something like:

export declare class Foo {
    readonly x?: MaybeUndefined | undefined;
    readonly y?: NeverUndefined | undefined;
    constructor(x?: MaybeUndefined, y?: NeverUndefined);
}
Additional information about the issue

The workaround of explicitly adding |undefined to the parameter property types is not too onerous, but still seems like an unnecessary restriction for isolatedDeclarations mode.

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

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

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Đá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.