首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

9102年,隔壁公司新来的女实习生问我什么是TypeScript ?

然后又经过若干的类型转换,被js转换成不知道是什么的数据展示了客户,那么炸了,可能会引起整个项目出现致命性错误直接奔溃 4....console.log(labelledObj.label); } var myObj = { size: 10, label: "Size 10 Object" }; printLabel(myObj); 如果ts在代码编写阶段出现类型的校验错误...赋值后, x和y再也不能被改变了。 let p1: Point = { x: 10, y: 20 }; p1.x = 5; // error!...如果你不想指定类型,TypeScript的类型系统会推断出参数类型,因为函数直接赋值了 SearchFunc类型变量。 函数的返回值类型是通过其返回值推断出来的(此例是 false和true)。...TS中一定要尽量避免使用any类型 any类型有太多不可预测的后果 function identity(arg: T): T { return arg; } 我们identity添加了类型变量

69620
您找到你想要的搜索结果了吗?
是的
没有找到

前端应该掌握的Typescript基础知识

为什么要用 TS ts 总体给我的感觉就是, 它能约束代码, 又有一定的灵活度, 可以培养你的编程习惯, 输出更高质量, 维护性高, 可读性高的代码 编译代码时,进行严格的静态类型检查, 编译阶段而不是运行时发现很多错误..., 特别是一些很低级的错误 帮助我们在写代码的时候提供更丰富的语法提示, 方便的查看定义对象上的属性和方法 比如: 你函数传了一个对象, 你在函数实现的时候还得记住对象里面都有啥参数, 你定义的参数名字是啥..., 可以赋值其他类型的变量 strictNullChecks 为 true 的话不能赋值其他类型 let str: string; str = null; str = undefined; 任意类型...:void => {} never 类型 永远不存在的值 任何类型的字类型, 可以赋值任何类型 但是任何类型都不可赋值 never, 包括 any function error(msg: string...如果变量定义的时候没有赋值, 默认是 any 类型 let x; // 可以赋值为任何类型的值 let x1 = '生生世世'; // x1会推论成sring类型, 不能给x1赋值为其他类型了 // x1

57410

React进阶(4)-拆分Redux-将store,Reducer,action,actionTypes独立管理

newState = JSON.parse(JSON.stringify(state)); newState.inputValue = action.value; // 将新的value值赋值...,至于拆分action中type类型值的好处就是,当你因为不小心把actionType拼写错误时,它会有很好的错误异常提示,这就是定义成一个常量的好处 拆分action,将它封装到一个函数里面去管理.../actionTypes'; // 引入actionTypes // 将action封装成一个函数,用于返回type类型和需要的参数 function getInputChangeAction(value...,那么的确是比较绕,但是不能因为这样,就不做拆分的 从长远来看,拆分action是很有必要的,一是将事件动作的类型定义成常量给分离出去,二是把整体action单独封装成一个函数放在一个单独的文件中进行管理的...,它返回对应的类型和必要的参数拆分的目的主要是提高代码的可维护性 (解释下单页面应用,一个页面,主要体现在入口上) 创建store单独管理 在上面的代码中,已经解决了Redux工作流程中的右半边部分

1.7K10

React进阶(4)-拆分Redux-将store,Reducer,action,actionTypes独立管理

newState = JSON.parse(JSON.stringify(state)); newState.inputValue = action.value; // 将新的value值赋值...,至于拆分action中type类型值的好处就是,当你因为不小心把actionType拼写错误时,它会有很好的错误异常提示,这就是定义成一个常量的好处 拆分action,将它封装到一个函数里面去管理 在上面的代码中.../actionTypes'; // 引入actionTypes // 将action封装成一个函数,用于返回type类型和需要的参数 function getInputChangeAction(value...,那么的确是比较绕,但是不能因为这样,就不做拆分的 从长远来看,拆分action是很有必要的,一是将事件动作的类型定义成常量给分离出去,二是把整体action单独封装成一个函数放在一个单独的文件中进行管理的...,它返回对应的类型和必要的参数拆分的目的主要是提高代码的可维护性 创建store单独管理 在上面的代码中,已经解决了Redux工作流程中的右半边部分,也就是做了action的拆分管理,那么接下来是整理

1.9K11

11 个需要避免的 React 错误用法

阅读完本文,您将学习如何避免下面这 11 个 React 错误用法: 渲染列表时,不使用 key 直接通过赋值方式修改 state 值 将 state 值直接绑定到 input 标签的 value 属性...执行 setState 后直接使用 state 使用 useState + useEffect 时出现无限循环 忘记在 useEffect 中清理副作用 错误的使用布尔运算符 没有定义组件参数类型 把字符串当做数值传递到组件...直接通过赋值方式修改 state 值 问题描述 在 React 中,state 时不能直接赋值修改,否则会导致难以修复的问题,因此下面的写法: updateState = () => { this.state.name...value={count} />; } 这是因为我们是使用带状态的 state 变量作为默认值赋值 的 value,而函数式组件中要修改 state的只能通过 useState 返回的...没有定义组件参数类型 问题描述 对于团队开发常见,每个人开发的组件如果没有定义好参数类型,就很容易出现配合的同事不知道如何使用组件,这就很麻烦了,比如: const UserInfo = (props)

2K30

React】1413- 11 个需要避免的 React 错误用法

阅读完本文,您将学习如何避免下面这 11 个 React 错误用法: 渲染列表时,不使用 key 直接通过赋值方式修改 state 值 将 state 值直接绑定到 input 标签的 value 属性...执行 setState 后直接使用 state 使用 useState + useEffect 时出现无限循环 忘记在 useEffect 中清理副作用 错误的使用布尔运算符 没有定义组件参数类型 把字符串当做数值传递到组件...直接通过赋值方式修改 state 值 问题描述 在 React 中,state 是不能直接赋值修改,否则会导致难以修复的问题,因此下面的写法: updateState = () => { this.state.name...value={count} />; } 这是因为我们是使用带状态的 state 变量作为默认值赋值 的 value,而函数式组件中要修改 state的只能通过 useState 返回的...没有定义组件参数类型 问题描述 对于团队开发常见,每个人开发的组件如果没有定义好参数类型,就很容易出现配合的同事不知道如何使用组件,这就很麻烦了,比如: const UserInfo = (props)

1.6K20

4000字讲清 《深入理解TypeScript》一书 【基础篇】

let Card = CardSuit.Clubs; // 类型安全 Card = 'not a member of card suit'; // Error: string 不能赋值 `CardSuit...event as HTMLElement; // Error: 'Event' 和 'HTMLElement' 中的任何一个都不能赋值另外一个 } 如果你仍然想使用那个类型,你可以使用双重断言。...对一个简单类型 Base 和 Child 来说,如果 Child 是 Base 的子类,Child 的实例能被赋值 Base 类型的变量。...: let foo: never = 123; // Error: number 类型不能赋值 never 类型 // ok, 做为函数返回类型的 never let bar: never = ((...为 false 时),但是 never 不能赋值其他任何类型,除了 never TypeScript 索引签名 JavaScript 在一个对象类型的索引签名上会隐式调用 toString 方法

1.9K30

检查JavaScript文件_TypeScript笔记18

写在前面 TypeScript 的类型检查不仅限于.ts,还支持.js 但为了确保文件内容只含有标准的 JavaScript 代码,.js文件按照 ES 语法规范来检查,因而不允许出现 TypeScript...: React.ReactNode; }> 因为在.js里没有指定泛型参数类型时,默认为any,所以不报错。...但同样的代码在.tsx里会报错: // .tsx import { Component } from 'react'; class MyComponent extends Component { render...对于没在构造函数中定义,或者构造函数中类型为undefined或null(此时为any)的属性,其类型为所有赋值中右侧值类型的联合 定义在构造函数中的属性都认为是一定存在的,其它地方(如成员方法)出现的都当作可选的...("end"); 同样,多次赋值时,类型为各值类型的联合 不定参数推断 .js里会根据arguments的使用情况来推断是否存在不定参数,例如: // .js function sum() { var

2.4K50

构建打包工具Rollup.js入门指南

webpack的几大特性 代码拆分 在webpack中,代码分离是最引人注目的特性之一。因为对于前端而言,资源包与依赖文件体积过大,将会直接影响性能。...尤其是在移动互联网时代,大文件的加载问题也会使得用户体验直线下降,所以如何拆分代码,按需加载是目前很多应用所面临的问题。...import只能作为模块顶层的语句出现不能出现function 里面或是 if 里面。 import 的模块名只能是字符串常量。...比如说你不能 import { a } from ‘./a’ 然后 a 赋值个其他什么东西。 Rollup官方对Rollup.js和webpack怎么看?...输出的文件 (如果没有这个参数,则直接输出到控制台) -f, --output.format [es] 输出的文件类型 (amd, cjs, es, iife, umd) -

2.1K52

一篇朴实的文章带捋完TypeScript基础,方法是正反对比!

掘金这篇文章不错,于是分享大家。 文章更多的是代码,所以可以把文章链接发到电脑上打开看和练习。...布尔值是最基础的数据类型,在 TypeScript 中,使用 boolean 定义布尔值类型: 以下都编译通过的,并且给出了说明,一句话总结,是什么类型就要赋值什么类型,这句话够俗了吧 正确的写法 /...something.length; } 对象的类型——接口 正确的写法 // 赋值的时候,变量的形状必须和接口的形状保持一致(不能多也不能少,类型还必须一致) interface Person {...sum() { let args: IArguments = arguments; } 错误的做法 // 数组的项中不允许出现其他的类型: let fibonacci: number[] =...): number { return x + y; } sum(1, 2, 3); // 可选参数后面不允许再出现必须参数了: function buildName(firstName?

1.1K20

React学习笔记(二)—— JSX、组件与生命周期

React 不强制要求使用 JSX,但是大多数人发现,在 JavaScript 代码中将 JSX 和 UI 放在一起时,会在视觉上有辅助作用。它还可以使 React 显示更多有用的错误和警告消息。...也就是说,你可以在 if 语句和 for 循环的代码块中使用 JSX,将 JSX 赋值变量,把 JSX 当作参数传入,以及从函数中返回 JSX: function getGreeting(user)...组件允许你将 UI 拆分为独立可复用的代码片段,并对每个片段进行独立构思。 组件,从概念上类似于 JavaScript 函数。...Greeting那么,控制台会出现警告 //传了两个子元素组件Greeting那么,控制台会出现警告 子元素1</span...,则必须调用super(props) constructor通常用于处理了state初始化和为事件处理函数绑定this实例 尽量避免将props外部数据赋值组件内部state状态 注意: constructor

5.5K20

花十分钟的时间武装你的代码

当我们的代码库有很多人维护时,经常会出现代码风格不一致或者代码质量不过关,提交信息杂乱的情况,当然啦,即使是一个人的代码库,有的时候,自己写代码时不太注意细节,也会出现风格不一致的情况。...定义中出现重名参数 'no-dupe-keys': 2, //禁止对象字面量中出现重复的 key 'no-duplicate-case': 2, //禁止出现重复的 case 标签...2, //禁止在正则表达式中使用空字符集 'no-ex-assign': 2, //禁止对 catch 子句的异常参数重新赋值 'no-extra-boolean-cast': 1, /...'constructor-super': 2, //要求在构造函数中有 super() 的调用 'no-class-assign': 2, //禁止赋值 'no-dupe-class-members...'react/jsx-uses-react': 1, //防止反应被错误地标记为未使用 'react/jsx-uses-vars': 1, //防止在JSX中使用的变量被错误地标记为未使用

2.5K30

React实战精讲(React_TSAPI)

⻚ 可以在「编译期间」发现并纠正错误 作为⼀种「解释型语⾔」,「只能」在运⾏时发现错误 「强类型」,⽀持静态和动态类型 「弱类型」,没有静态类型选项 最终被编译成 JavaScript 代码,使浏览器可以理解...1 看到 语法,就「像传递参数⼀样」,上面代码传递了我们想要⽤于特定函数调⽤的类型。...---- TS_React:Hook类型类型推断 ❝在绝大部分,TS都可以根据hook中的值来推断它们的类型:也就是我们常说的「类型推断」 ❞ 何为类型推断,简单来说:「类型推断」就是「基于赋值表达式推断类型的能...const [name, setName] = useState('前端柒八九'); 何时不能依赖类型推断 下面的两种情境下,类型推断有点力不从心 ts推断出的类型「过于宽松」 类型推断错误 推断出的类型过于宽松...> Fragment 与 的不同 Fragment 这个组件可以赋值 key,也就是索引, 不能赋值 ---- React.lazy lazy:允许你定义一个动态加载组件,这样有助于缩减

10.3K30

TypeScript基础——基本类型检查

举个栗子: 变量 //我们定义变量的时候,肯定是知道这个变量是存放什么类型的数据 let name:string = "法医"; 一旦 name 赋值其它类型,立马会提示错误 举个栗子: 函数参数和返回值...number,赋值变量result,TS还会智能地发现函数返回的结果是number,所以result类型也是number,因此我们只需要在参数位置加上类型约束就可以了,TS在每个地方都有类型检查,是不是很牛逼...,null和undefined就不能赋值其它的了 3....:any类型可以绕过类型检查,因此any类型可以赋值任意类型,但肯定是有隐患的,因为它无法使用TS提供的保护机制,所以不建议随意的使用any类型,为了解决any带来的问题,TS3.0引入了unknown...意味着代码提示中不会出现所有数字拥有的方法或者所有字符串所拥有的方法,只会提示数字和字符串共同拥有的方法——toString和valueOf如下图: 解决方案: 加上下面两句代码,这两句代码相当于告诉

1.2K10
领券