Skip to content

规范类型系统 #1

@jjyyxx

Description

@jjyyxx

鉴于目前的简记法能够提供强类型的参数匹配,普通记法也应当能实现类似功能。所以我提议建立一个简易的类型系统,允许用户在每一个函数前附加一个类似jsdoc的注释(可缺省),格式大致如下

/**
 * optional desc which wil be ignored
 * @param {Subtrack} param1 optional desc which wil be ignored
 * @param {Subtrack} param2 optional desc which wil be ignored
 * @alias xxxx (目前考虑用 ;分隔优先级声明,待议)
 * @alias yyyy
 * @other tags which wil be ignored
 */

注意到alias的声明中包含了对对应参数的类型限制,因此@param@alias可以考虑相互配合

  1. 无简记的函数,仅依据param判定类型,无则任意类型
  2. 有简记的函数,如果有param,简记法声明时可以不再声明约束类型,1: subtrack 简化为 1
  3. 有简记的函数,如果无param,简记法声明中的类型约束可以作为函数的类型

以上是我的一些想法,应该属于非破坏性的功能增强。

附注:类似tm的文档语法的设计思想,设计尽量贴近jsdoc语法,但为最高效地为tm函数服务,而作出少量改变,目前包括:

  • 覆写了jsdoc对alias的定义

  • 限制了有效的类型格式

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions