Javascript 在流中扩展对象类型并覆盖属性
在TypeScript中,我可以执行以下操作:Javascript 在流中扩展对象类型并覆盖属性,javascript,typescript,flowtype,flow-typed,Javascript,Typescript,Flowtype,Flow Typed,在TypeScript中,我可以执行以下操作: interface MyObj { a: 'foo' | 'bar' } interface MyExtObj extends Pick<MyObj, Exclude<keyof MyObj, 'a'>> { a: MyObj['a'] | 'baz' } const test: MyExtObj = { a: 'baz' // Works fine, as well as 'foo' and '
interface MyObj {
a: 'foo' | 'bar'
}
interface MyExtObj extends Pick<MyObj, Exclude<keyof MyObj, 'a'>> {
a: MyObj['a'] | 'baz'
}
const test: MyExtObj = {
a: 'baz' // Works fine, as well as 'foo' and 'bar'
}
接口MyObj{
a:‘foo’|‘bar’
}
接口MyExtObj扩展了Pick{
a:MyObj['a']|'baz'
}
常量测试:MyExtObj={
答:'baz'//很好用,还有'foo'和'bar'
}
是否可以使用流对象类型执行此操作?如果可以,如何执行?以下示例失败
/* @flow */
type MyObj = {
a: 'foo' | 'bar'
}
type MyExtObj = MyObj & {
a: $PropertyType<MyObj, 'a'> | 'baz'
}
const test: MyExtObj = {
a: 'baz' // Cannot assign object literal blah blah ...
}
/*@flow*/
类型MyObj={
a:‘foo’|‘bar’
}
类型MyExtObj=MyObj&{
a:$PropertyType |‘baz’
}
常量测试:MyExtObj={
a:'baz'//无法分配对象文字等等。。。
}
像这样吗
/* @flow */
type MyObj = {|
a: 'foo' | 'bar'
|}
type MyExtObj = {|
...MyObj,
a: $PropertyType<MyObj, 'a'> | 'baz'
|}
const test: MyExtObj = {
a: 'baz' // Cannot assign object literal blah blah ...
}
/*@flow*/
类型MyObj={|
a:‘foo’|‘bar’
|}
MyExtObj类型={|
…MyObj,
a:$PropertyType |‘baz’
|}
常量测试:MyExtObj={
a:'baz'//无法分配对象文字等等。。。
}
如果出于某种原因不想使MyObj精确,您可以对此进行测试:
/* @flow */
type MyObj = {
a: 'foo' | 'bar'
}
type MyExtObj = {|
...$Exact<MyObj>,
a: $PropertyType<MyObj, 'a'> | 'baz'
|}
const test: MyExtObj = {
a: 'baz' // Cannot assign object literal blah blah ...
}
/*@flow*/
类型MyObj={
a:‘foo’|‘bar’
}
MyExtObj类型={|
…准确地说,
a:$PropertyType |‘baz’
|}
常量测试:MyExtObj={
a:'baz'//无法分配对象文字等等。。。
}