Flow: Fix the example for width subtyping (#558)

This commit is contained in:
SZ-CHENG HUANG 2020-07-05 19:05:07 +08:00 committed by GitHub
parent a54b580e01
commit 04f28a1d76
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 10 additions and 8 deletions

18
flow.md
View File

@ -144,7 +144,7 @@ See: [Optional properties](https://flow.org/en/docs/types/primitives/#toc-option
## Objects
{: .-three-column}
### Extra object fields
### Width subtyping
```js
type Artist = {
@ -156,14 +156,13 @@ type Artist = {
```js
const a: Artist = {
name: 'Miguel Migs',
label: 'Naked Music'
label: 'Naked Music',
genre: 'House' // ✓ OK
}
a.genre = 'House' // ✓ OK
```
{: data-line="6"}
You can add more fields to an object.
A type with more properties is "wider" and is a subtype of a "narrower" type.
See: [Width subtyping](https://flow.org/en/docs/lang/width-subtyping/)
@ -178,10 +177,13 @@ type Artist = {|
{: data-line="1,4"}
```js
const a: Artist = { ··· }
a.genre = 'House' // ✗ Error
const a: Artist = {
name: 'Miguel Migs',
label: 'Naked Music',
genre: 'House' // ✗ Error
}
```
{: data-line="2"}
{: data-line="4"}
Exact object types prevent extra properties from being added to an object.