我是TypeScript的初学者(第1天),但从事过高于平均水平的JavaScript项目.我正在寻找关于在代码中声明或分配类型的一些"最佳实践"和标准的建议.目前,我发现自己在做这件事,实际上是为了让我的代码变得不可读.

例如,考虑以下情况:

import {createApp, DefineComponent} from 'vue'
import {createRouter, createWebHistory, Router, RouteRecordRaw, RouterHistory} from 'vue-router'
import NPage from '~/layouts/N-Page.vue'
const router : Router = createRouter({
  history: <RouterHistory>createWebHistory(),
  routes: <RouteRecordRaw[]>[{
    component: <DefineComponent>NPage,
    name: <string>'home',
    path: <string>'/',
  }]
})
createApp(NPage).use(router).mount('#app')

这是Vue的简单main.ts设置.js.现在,我的IDE(IntelliJ IDEA)能够自行确定router的类型.然而,我继续明确地声明了类型.与historyroutes等相同.更糟糕的是,我发现自己也 for each 单独的属性声明了类型(componentnamepath).

这变得非常混乱,非常快.从表面上看,我可以假设,事情不是这样的.在这种情况下,有人能否指出,如何准确地决定我们需要为哪些类型声明/分配类型,哪些不需要?

推荐答案

这不是一个好主意.

当类型被简单推断时,通常不使用显式类型.所有这些函数都返回Typescript已经知道的类型,依赖它们是完全安全的.


事实上,您的示例代码应该与普通JS等效代码完全相同:

import {createApp, DefineComponent} from 'vue'
import {createRouter, createWebHistory, Router, RouteRecordRaw, RouterHistory} from 'vue-router'
import NPage from '~/layouts/N-Page.vue'

const router = createRouter({
  history: createWebHistory(),
  routes: [{
    component: NPage,
    name: 'home',
    path: '/',
  }]
})

由于您已经在该文件中导入了强类型代码,并且没有导出任何您自己的数据 struct ,因此这里不需要任何其他内容.


比这更具体的建议会引起人们的注意,但我认为,在开始时,请默认关闭类型,当您看到类型错误或将鼠标悬停在编辑器中的标记上并看到类型any时,请进行修复.any不好,不要让值为any.

若您有specific多个关于如何处理specific种类型注释的问题,请针对这些特定情况提出一个新问题.

Javascript相关问答推荐

我开始使用/url?q=使用Cheerio

Snowflake JavaScript存储过程返回成功,尽管预期失败

如何在Javascript中使用Go和检索本地托管Apache Arrow Flight服务器?

从Node JS将对象数组中的数据插入Postgres表

v—自动完成不显示 Select 列表中的所有项目

为什么按钮会随浮动属性一起移动?

无法从NextJS组件传递函数作为参数'

在Three JS中看不到补间不透明度更改效果

XSLT处理器未运行

对网格项目进行垂直排序不起作用

扩展类型的联合被解析为基类型

TypeError:无法读取未定义的属性(正在读取';宽度';)

在SHINY R中的嵌套模块中,不能使用Java代码

使用父标签中的Find函数查找元素

为什么延迟在我的laravel项目中不起作用?

图表4-堆叠线和条形图之间的填充区域

React Refs不与高阶组件(HOC)中的动态生成组件一起工作

JavaScript:多个图像错误处理程序

Firefox的绝对定位没有达到预期效果

有没有一种方法可以在不定义任何属性的情况下使用CSS转换?