π Search Terms
override ambient type declaration class dts noImplicitOverride
π Version & Regression Information
- This is the behavior in every version I tried
β― Playground Link
https://www.typescriptlang.org/play/?noImplicitOverride=true&ts=5.8.0-dev.20241128&ssl=15&ssc=2&pln=1&pc=1#code/PTAEAEDsHsEkFsAOAbAlgY1QFwPIDcBTAJyNQBMCAuULIgVwIChGL1kBDIg0N9gZz6gAQv24BvRqFAAjapDrxpxANyMAvs1YcuPDgNAARYqkJlQBAB5YCkMoJF9xkmXIVKiqjSwK8dvfQ4EAEygYl5anNz+gkakpiGW1rb2oiESUtCEJOTcsqDyiirqjEA
π» Code
// @noImplicitOverride: true
declare class Base {
b: number;
}
declare class Derived extends Base {
b: number; // no error
}
declare class Base2 {}
declare class Derived2 extends Base2 {
override b: number; // error
}
π Actual behavior
A property in a derived class in ambient context doesn't have to have override modifier with noImplicitOverride. override is still checked when present though.
π Expected behavior
It feels slightly inconsistent. I couldn't find any note about this in the docs and I had to look into the source code and dig up the PR that implemented override to check if it's a bug or not.
Additional information about the issue
I believe this works like that since noImplicitOverride was introduced in #39669 in 4.3: TS playground
π Search Terms
override ambient type declaration class dts noImplicitOverride
π Version & Regression Information
β― Playground Link
https://www.typescriptlang.org/play/?noImplicitOverride=true&ts=5.8.0-dev.20241128&ssl=15&ssc=2&pln=1&pc=1#code/PTAEAEDsHsEkFsAOAbAlgY1QFwPIDcBTAJyNQBMCAuULIgVwIChGL1kBDIg0N9gZz6gAQv24BvRqFAAjapDrxpxANyMAvs1YcuPDgNAARYqkJlQBAB5YCkMoJF9xkmXIVKiqjSwK8dvfQ4EAEygYl5anNz+gkakpiGW1rb2oiESUtCEJOTcsqDyiirqjEA
π» Code
π Actual behavior
A property in a derived class in ambient context doesn't have to have
overridemodifier withnoImplicitOverride.overrideis still checked when present though.π Expected behavior
It feels slightly inconsistent. I couldn't find any note about this in the docs and I had to look into the source code and dig up the PR that implemented
overrideto check if it's a bug or not.Additional information about the issue
I believe this works like that since
noImplicitOverridewas introduced in #39669 in 4.3: TS playground