美文网首页
TypeScript 详解之 declare 关键字

TypeScript 详解之 declare 关键字

作者: you的日常 | 来源:发表于2023-08-10 20:33 被阅读0次

    简介

    declare 关键字用来告诉编译器,某个类型是存在的,可以在当前文件中使用。

    它的主要作用,就是让当前文件可以使用其他文件声明的类型。举例来说,自己的脚本使用外部库定义的函数,编译器会因为不知道外部函数的类型定义而报错,这时就可以在自己的脚本里面使用declare关键字,告诉编译器外部函数的类型。这样的话,编译单个脚本就不会因为使用了外部类型而报错。

    declare 关键字可以描述以下类型。

    • 变量(const、let、var 命令声明)
    • type 或者 interface 命令声明的类型
    • class
    • enum
    • 函数(function)
    • 模块(module)
    • 命名空间(namespace)

    declare 关键字的重要特点是,它只是通知编译器某个类型是存在的,不用给出具体实现。比如,只描述函数的类型,不给出函数的实现,如果不使用declare,这是做不到的。

    declare 只能用来描述已经存在的变量和数据结构,不能用来声明新的变量和数据结构。另外,所有 declare 语句都不会出现在编译后的文件里面。

    declare variable

    declare 关键字可以给出外部变量的类型描述。

    举例来说,当前脚本使用了其他脚本定义的全局变量x

    x = 123; // 报错
    
    

    上面示例中,变量x是其他脚本定义的,当前脚本不知道它的类型,编译器就会报错。

    这时使用 declare 命令给出它的类型,就不会报错了。

    declare let x:number;
    x = 1;
    
    

    如果 declare 关键字没有给出变量的具体类型,那么变量类型就是any

    declare let x;
    x = 1;
    
    

    上面示例中,变量x的类型为any

    下面的例子是脚本使用浏览器全局对象document

    declare var document;
    document.title = 'Hello';
    
    

    上面示例中,declare 告诉编译器,变量document的类型是外部定义的(具体定义在 TypeScript 内置文件lib.d.ts)。

    如果 TypeScript 没有找到document的外部定义,这里就会假定它的类型是any

    注意,declare 关键字只用来给出类型描述,是纯的类型代码,不允许设置变量的初始值,即不能涉及值。

    // 报错
    declare let x:number = 1;
    
    

    上面示例中,declare 设置了变量的初始值,结果就报错了。

    declare function

    declare 关键字可以给出外部函数的类型描述。

    下面是一个例子。

    相关文章

      网友评论

          本文标题:TypeScript 详解之 declare 关键字

          本文链接:https://www.haomeiwen.com/subject/stenpdtx.html