#30698·TypeScript

支持自定义 typeof 函数

作者: ExE-Boss创建于 2019年4月1日更新于 2026年9月15日
标签SuggestionAwaiting More Feedback

□ 搜索术语

  • 自定义类型
  • 功能的自定义类型
  • 自定义类型警卫

□ 建议

当使用 a  Custom `typeof ×××2011;like 函数时,我希望 TypeScript 编译器能够推断出自自定义'typeof××2011;like 函数所守护的范围中的正确类型.

□ 使用大小写

我需要这为Blissfuljs(https://blisssfuljs.com/docs.html#fn-type)和类似项目提供适当的类型信息。

  当前的方法需要定义   'type (.)\nbsp; 函数 as  type(obj:\nbsp;any):\nbsp;string 和\nbsp;then在"if\nbsp;block"中每次“某事”是和nbsp;访问时都会做 a type和nbsp;cast:

//<参考类型='blissfuljs'/> 申报某物:任何; 如果 (. type( 某) ) {% “ 阵列” { (某事作为任何[]. for Each(v] {{/* 事 */}) {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?


□ 实例

<details}\ summary}\ code> type-func.d.ts </code}/ summary> 互联网档案馆的存檔,存档日期2013-12-20.
< br/> (韩语)


页:1
* @param obj 检查类型时的变量 。
* @ 回归 对象小写中`类型obj'或类名的结果。
* 就数字而言,如果值为`NaN',则结果为`nan'。
* 《大会正式记录,第五十七届会议,补编第6号》(A/C.5/56/6),第二章。
声明函数类型( obj: 无效): “ null ” ;
声明函数类型(obj:未定义):"未定义";

/ 请检查url=值 (帮助). 这是为了确保类型系统在遇到原始类型时的短路.
声明函数类型(obj: 数字):"数字" QQ"nan";
声明函数类型(obj:字符串):"字符串";
声明函数类型(obj:符号):"符号";
宣告函数类型( obj: boolean): “ boolean ” ;

/ 需要确保在使用包装对象时适当的返回值。
/ * tslint:可拆分:ban-types */
声明函数类型(obj: number QQ number):"数""|";
声明函数类型(obj:字符串 QQ字符串):"字符串";
宣告函数类型(obj:符号QQ符号):"符号";
宣告函数类型( boolean: boolean QQ Boolean): “ boolean ” ;
声明函数类型(obj:函数):"函数";
/ * tslint: enenable: ban-types */ s:

声明函数类型(obj: any []): “阵列”;
声明函数类型(obj: RegExp):"regexp";
声明函数类型(obj: 任何):字符串;
导出=类型;

</详情>

`实例.ts'

导入类型 = 要求 (.)/ 类型- 句号 ); 申报某物:任何;

如果( 类型( 某) ) #% “ 阵列” { // $pectType 任何 [] 东西; } 如果( 类型( 偏差) ) { 数字 }{ // $ expectType 号码 东西; {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?


□ 核对表

我的建议符合这些准则:

* [x] 这不会是TypeScript/JavaScript代码的突破性改变
* [x] 这不会改变 JavaScript代码的运行时间行为
* [x] 这一点可以在不根据表达方式的类型而排放不同联署材料的情况下实施。
* [x] 这不是运行时的功能(例如库功能,带有JavaScript输出的非ECMAScript语法等).
* [x] 这一特点与[TypeScript设计目标]的其余部分(https://GitHub.com/Microsoft/TypeScript/wiki/TypeScript-Design-Goals)一致.

内容来源: microsoft/TypeScript