mirror of
https://github.com/grafana/grafana.git
synced 2025-01-16 11:42:35 -06:00
Docs: Update style guide with explicit return types (#23918)
This commit is contained in:
parent
dfe2ab9502
commit
d3b19adbed
@ -172,6 +172,44 @@ const CONSTANT_VALUE = "This string won't change";
|
|||||||
|
|
||||||
_SASS styles are deprecated. Please migrate to Emotion whenever you need to modify SASS styles._
|
_SASS styles are deprecated. Please migrate to Emotion whenever you need to modify SASS styles._
|
||||||
|
|
||||||
|
### Typing
|
||||||
|
|
||||||
|
In general, you should let Typescript infer the types so that there's no need to explicitly define type for each variable.
|
||||||
|
|
||||||
|
There are some exceptions to this:
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// Typescript needs to know type of arrays or objects otherwise it would infer it as array of any
|
||||||
|
|
||||||
|
// bad
|
||||||
|
const stringArray = [];
|
||||||
|
|
||||||
|
// good
|
||||||
|
const stringArray: string[] = [];
|
||||||
|
```
|
||||||
|
|
||||||
|
Specify function return types explicitly in new code. This improves readability by being able to tell what a function returns just by looking at the signature. It also prevents errors when a function's return type is broader than expected by the author.
|
||||||
|
|
||||||
|
> Note: We don't have linting for this enabled because of lots of old code that needs to be fixed first.
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// bad
|
||||||
|
function transform(value?: string) {
|
||||||
|
if (!value) {
|
||||||
|
return undefined
|
||||||
|
}
|
||||||
|
return applyTransform(value)
|
||||||
|
};
|
||||||
|
|
||||||
|
// good
|
||||||
|
function transform(value?: string): TransformedValue | undefined {
|
||||||
|
if (!value) {
|
||||||
|
return undefined
|
||||||
|
}
|
||||||
|
return applyTransform(value)
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
### File and directory naming conventions
|
### File and directory naming conventions
|
||||||
|
|
||||||
Name files according to the primary export:
|
Name files according to the primary export:
|
||||||
|
Loading…
Reference in New Issue
Block a user