-
Notifications
You must be signed in to change notification settings - Fork 327
Open
Milestone
Description
Applicable ESLint rules:
- @typescript-eslint/explicit-function-return-type -- applies to all functions
- @typescript-eslint/explicit-module-boundary-types -- applies to only exported functions
Basically, consider a decorator helper like:
export function getStatusCodes(program: Program, entity: Type) {
return program.stateMap(statusCodeKey).get(entity);
}The inferred type is any because that's what stateMap returns, but really we know for this specific case it's string[] | undefined (or string[] when you have done an isStatusCode() check first.)
This requires consumers to look into our actual implementation code to determine the data types returned from decorator state methods, which is a bit time consuming and annoying. It also means that breaks could easily occur as we're not enforcing a public contract but relying on casting from any.
Consider the alternative:
export function getStatusCodes(program: Program, entity: Type): string[] {
return program.stateMap(statusCodeKey).get(entity) ?? [];
}Now a consumer knows exactly what they're going to get and they never have to worry about the undefined case.
Metadata
Metadata
Assignees
Labels
No labels