-
Notifications
You must be signed in to change notification settings - Fork 13.2k
Open
Labels
BugA bug in TypeScriptA bug in TypeScriptDomain: Declaration EmitThe issue relates to the emission of d.ts filesThe issue relates to the emission of d.ts filesHelp WantedYou can do thisYou can do this
Milestone
Description
π Search Terms
TS4055 declaration protected return typeof parameter
π Version & Regression Information
- This is the behavior in every version I tried, and I reviewed the FAQ for entries about declarations
β― Playground Link
π» Code
export interface Properties {
propertyA: number;
propertyB: string;
}
export function getPropertyValue_Ok(
properties: Properties,
propertyName: keyof Properties,
): Properties[typeof propertyName] {
return properties[propertyName];
}
export class A {
public getPropertyValue_Ok(
properties: Properties,
propertyName: keyof Properties,
): Properties[typeof propertyName] {
return properties[propertyName];
}
// error TS4055: Return type of public method from exported class has or is using private name 'propertyName'.
protected getPropertyValue_Error(
properties: Properties,
propertyName: keyof Properties,
): Properties[typeof propertyName] {
return properties[propertyName];
}
// error TS4073: Parameter 'propertyValue' of public method from exported class has or is using private name 'propertyName'.
protected setPropertyValue_Error(
properties: Properties,
propertyName: keyof Properties,
propertyValue: Properties[typeof propertyName],
) {
// TODO
}
}π Actual behavior
The protected methods fail to generate declaration with TS4055 or TS4073.
π Expected behavior
The protected methods should be able to generate declaration similar to the public method or function.
Additional information about the issue
I wonder if there's a way to temporarily suppress this error, becuase ts-ignore doesn't seem to work when generating declaration.
Metadata
Metadata
Assignees
Labels
BugA bug in TypeScriptA bug in TypeScriptDomain: Declaration EmitThe issue relates to the emission of d.ts filesThe issue relates to the emission of d.ts filesHelp WantedYou can do thisYou can do this