Ato*_*ton 43 javascript types flowtype
该文件说:
mixed:所有类型的"超类型".任何类型都可以流入mixed.any:"动态"类型.任何类型都可以流入any,反之亦然
哪里会是一个什么情况mixed并any不能互换使用?
eku*_*ela 25
区别在于"反之亦然":any可以流入其他类型但mixed不能.
/* @flow */
var numeric:number = 0;
var looselyTyped:any;
var someType:mixed;
numeric = looselyTyped;
numeric = someType; //only this will throw a flow check error
Run Code Online (Sandbox Code Playgroud)
从您链接到的文档:
由于此注释的特殊性,值得特别提及.使用any来逃避Flow的静态类型.换句话说,如果Flow阻碍了您,并且您绝对确信您的程序类型正确,则可以通过在类型为any的错误路径上注释位置来消除错误.
Ven*_*CKi 20
"任何"支持协方差和逆变.那是因为"any"是所有类型的超类型和子类型.
因此,这工作,
let genericVariable: any = 20;
let numericVariable: number;
genericVariable = numericVariable; // No error
numericVariable = genericVariable; // No error
Run Code Online (Sandbox Code Playgroud)
混合仅支持协方差.它是超类型而不是所有类型的子类型.
let genericVariable: mixed = 20;
let numericVariable: number;
numericVariable = genericVariable; // This shows error
genericVariable = numericVariable; // This works fine.
Run Code Online (Sandbox Code Playgroud)
协方差 - 通用类型(父)可以用特殊类型(子)代替
逆变 - 特殊类型(子)可以用泛型类型(父级)代替.这是一个问题,除非受某些约定的保护.
| 归档时间: |
|
| 查看次数: |
6163 次 |
| 最近记录: |