Angular8中编写使用d.ts

最近在研究如何在Angular8中自己编写和使用d.ts,首先说明一下d.ts文件的作用,d.ts的作用适用于在ts中使用js文件,可以帮助我们提示变量或者方法中参数的类型,使得编程更加规范(个人理解)。

1、toast.js文件如下:

 var lettersRegexp="aaaa";
 const toasttest = function toasttest(a,b){
    return a+b;
 };
 export default{toasttest,lettersRegexp};

我这里使用的是export default如果直接使用export或者module.exports,会提示is not a function,

Angular8中编写使用d.ts_第1张图片

具体使用哪一种与你在tsconfig.json中配置的module相关,具体使用AMD、CommandJs还是ES6,自行百度,我这里是ES6

2、toast.d.ts文件如下:

declare module "toast" {
     export function toasttest(a: number, b: number): number;//
     export let lettersRegexp:string;
}
js和d.ts文件需要在同一目录下,并且js文件名称需要与d.ts中的module名称相同,

3、需要在tsconfig.json中配置paths路径,通过配置该路径,才可以找到js以及d.ts文件,我想js和d.ts文件应该是可以分开的存放的,只是目前我还不清楚怎么配置,以及paths配置的路径时d.ts的路径还是js的路径,目前还不清楚。

Angular8中编写使用d.ts_第2张图片

4、在使用该js模块的ts文件中,加入///,因为使用了tslint语法,加上这段代码会显示警告“ is not allowed, use imports (no-reference)tslint(1)”,后面我直接删除该段代码,发现并不影响程序编译和运行。

5、在ts中引用该JS文件

import toast from 'toast';导入模块toast

import {error} from 'toast';导入toast模块中的方法toasttest

6、因为项目中以前写的JS都是requireJS,toast.js文件如下(代码只是结构示例):

define([], function() {

  return {

    toast: function(className, message) {

    },

    info: function(message) {

    },

    error: function(tag, message, error) {

      } 

    warn: function(tag, message, error) {

      }

});

toast.d.ts如下:

declare module "toast" {

     export function toast(className: string, message: string): void;//

     export function info(message: string): void;//

     export function error(tag: any, message: string, error: any): void;//

     export function warn(tag: any, message: string, error: any): void;//

}

发现上面的配置同样有效,就没必要在js文件中通过export default{}导出方法。

注:这篇文章只是自己记录解决的问题,以便以后使用,还有很多已获得地方,待后面更好的理解在来补充。

 

 

你可能感兴趣的:(Angular8,d.ts,ts中使用js,Angular8)