zoukankan      html  css  js  c++  java
  • ts笔记-类型声明

    全局类型声明

    对于使用js编写的第三方库,通常可以在DefinitelyTyped中找到types包,比如jQuery。

    npm install @types/jquery --save-dev
    

    使用

    // 即使没有手动引入,全局也都拥有类型提示
    $.ajax()
    

    原因:默认所有可见的"@types"包会在编译过程中被包含进来。 node_modules/@types文件夹下以及它们子文件夹下的所有包都是可见的; 也就是说, ./node_modules/@types/,../node_modules/@types/和../../node_modules/@types/等等。

    如何手动管理types包

    如果想要手动指定加载包,可以配置types选项,指定加载哪些包

    {
       "compilerOptions": {
            "types" : [] // 如果配置为[],上面的$就没有提示了。改为["jquery"],就又拥有提示了
       }
    }
    

    自定义声明

    如果想要为自己写的js库添加声明文件也很简单,在tsconfig的同级目录创建一个@types文件夹,根据上面说的types加载机制,@types目录下的包是可以自动加载进来的。但需要注意的是这里的类型声明是全局的,比如:

    // @types/bar.d.ts 定义一个接口
    
    interface Point {
        x: number,
        y: number
      }
    
    // @types/bar.d.ts 声明一个全局变量
    declare let point:Point
    
    // 其他任何ts文件都有提示
    const name1: Point = {
        x: 100
        y: 300
    }
    
    

    说明:根级别的声明都必须以 declare 关键字作为前缀,例如变量point

    说明:对于这些影响全局的声明,通常建议放到一个统一文件中,比如global.d.ts。如果仅供某个文件使用,可以在ts文件中定义声明。

    常用网站: SegmentFault | GitHub | 掘金社区
  • 相关阅读:
    cocos2dx
    读书日记-快速排序算法
    vs重装找不到 $(WindowsSdkDir) 配置问题
    IOS应用FFMPEG库
    OpenGL ES2.0贴图
    OpenGL ES2.0光照
    IOS系统配置FFMEPG
    GPUImage库的使用
    spring08事务
    java10---点餐系统
  • 原文地址:https://www.cnblogs.com/yesyes/p/15408255.html
Copyright © 2011-2022 走看看