javascript - Is there something like incomplete (partial) declarations for Flow? -
i'd incrementally add declarations external library. possible write declaration describes properties of object/interface , remaining properties omitted declaration , unchecked?
for example: can following object
const = {foo: 8, bar: 9} have declaration describing 1 property?
declare var a: any|{foo: number} // doesn't work the intended behavior if property found in declaration type enforced. type of non-mentioned properties considered any.
typescript solves problem using properties expression:
interface iface { foo: number; [propname: string]: any; }
type partiala = {foo:number, [key:string]: any} const a: partiala = {foo: 1, bar: 2} console.log(a.bar) this options safer following 1 since types of known properties onforced:
a.foo = 'a' // causes error // 6: a.foo = 'a' // ^ string. type incompatible // 3: type partiala = {foo:number, [key:string]: any} // ^ number or
type partialb = {foo:number}&any const b: partialb = {foo: 1, bar: 2} console.log(b.bar) b.foo = 'a' // ok in flow tested flow v0.34.0
credit: @loganfsmyth, @gcanti
Comments
Post a Comment