2016-09-28 8 views
5

Я определен типКак установить значение по умолчанию для типа потока?

export type MyType = { 
    code: number, 
    type: number = 1, 
} 

пользовательских Flow Я хочу параметр type по умолчанию, как 1, если значение не присутствует. Однако Flow жалуется на Unexpected token =.

Flow error

Может ли это быть сделано с потоком?

В настоящее время используется поток v0.32.0.

+0

Это не возможно. Кроме того, не имеет смысла смешивать и сопоставлять типы и значения. – gcanti

+0

Но это можно сделать при аннотации функции, то есть 'function (code: number, type: number = 1) {}'. – amb

+0

Часть '= 1' находится на уровне значения – gcanti

ответ

3

Go с идеей @basarat предлагает, и использовать класс. Класс существует как тип, так и значение.

Значение может быть инициализировано. Flow распознает предложенный синтаксис свойства инициализатора, поэтому использование Flow (для типов) и столпотворения (для предлагаемой поддержки функции) вы можете объявить свой класс как this:

// @flow 
export class MyType { 
    code: number; 
    type: number = 1; 
}; 

Flow и типов он позволяет определить, не являетесь присутствовать в среде выполнения javascript. Вот почему объявления типа не поддерживают инициализаторы значений.

2

Функциональные параметры также могут иметь значения по умолчанию. Это особенность ECMAScript 2015.

function method(value: string = "default") { /* ... */ } 

В дополнении к множеству типов, параметры по умолчанию также могут быть недействительными или вообще отсутствовать. Однако они не могут быть нулевыми.

// @flow 
function acceptsOptionalString(value: string = "foo") { 
    // ... 
} 

acceptsOptionalString("bar"); 
acceptsOptionalString(undefined); 
acceptsOptionalString(null); 
acceptsOptionalString(); 

https://flow.org/en/docs/types/primitives/#toc-function-parameters-with-defaults

Смежные вопросы