当前位置: 首页 > 知识库问答 >
问题:

typescript - 怎么在 功能编写阶段 将js 和 ts 分开?

查淮晨
2023-10-21

某些情况下,我并不需要 ts 为我的功能函数进行类型检查,我只需要它帮我提醒使用者 功能函数 有哪些调用方式;因此我不想使用 a.ts 将其混入到一个文件。
如何做?请以此为例

// a.jsfunction yyp(a) {  return a ? a + 1 : "-";}// a.d.tsinterface yyp {    (): string;    (a: number): number;}

希望的使用方式:

import * as set from "./a";console.log(set.yyp());console.log(set.yyp(1));

仅引入一个文件就能进行使用,并且能够接受 ts 的类型束缚。


如同 echarts 插件一样,将 js-功能实现ts-使用限制 分开。

import * as echarts from "echarts";echarts.init(....);

环境:vue3 , vite

共有2个答案

元胡媚
2023-10-21
project-root-directory/│├── src/│   ││   ├── functions/│   │   ├── js/│   │   │   └── a.js│   │   ││   │   ├── ts/│   │   │   └── a.d.ts│   │   ││   │   └── index.ts│   ││   ├── components/│   │   └── ... (your Vue components)│   ││   ├── App.vue│   ├── main.ts│   ││   └── ...│├── public/│   └── ...│├── vite.config.js├── tsconfig.json├── package.json└── ...

src/functions/js/ 目录放 JS 文件, a.js。
src/functions/ts/ 目录放 TS 类型声明文件,a.d.ts。
src/functions/index.ts 是索引文件,重新导出 js 子目录里的全部函数。

vue文件里:

import * as set from '@/functions';console.log(set.yyp());console.log(set.yyp(1));

tsconfig.json:

{  "compilerOptions": {    "baseUrl": "./",    "paths": {      "*": ["functions/ts/*", "functions/js/*"]    }  }}

index.ts

export * from './js/a';
任飞鸣
2023-10-21

写 ts,然后用的时候 tsc 编译后,引入使用的 js 文件

 类似资料:
  • topAncestorElement 的类型是 call 的返回值 undefined; 我希望使用 [].find.call 这种写法,要怎么修改呢? as unknown as HTMLElement 这样断言就行了。之前没注意看提示...

  • 我正在用TypeScript编写一个React高阶组件(HOC)。HOC应该比包装组件多接受一个道具,所以我写了以下内容: 换句话说,是一个生成实际hoc的函数。这个HOC(我相信)是一个接受

  • ts 中为 axios 的 config 属性约束新增自定义属性,导致 axios 其他工具函数报错,报错信息如下:Property 'get' does not exist on type 'typeof import("axios")'. 查了一下是因为 axios 模块声明导致 axios 模块被覆盖,请问这种问题该如何解决呢

  • 将下面的js版的props,改成ts版: vue的 ts的 但是上面这样写报错。 初次使用ts,求教各位老师。

  • 在 YOG2 下,通过 widget 的划分,可以以 widget 为粒度,以多种模式加载,依靠这种技术我们可以优化大型网站性能或者轻松的实现一个单页应用。 BigPipe Facebook 的 BigPipe 技术,是通过将站点分解为多个 pagelet 小块,每个pagelet 获取数据与渲染均是独立的,当传统的后端模板渲染模式受限于后端响应速度最慢的接口时,BigPipe 模式可以实现 pa

  • interface IconCardProps { img: any; text: string; } 其中 img 是图片,通过import 导入进来的,怎么定义呢大家?