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

【TS】588- TypeScript 3.8 新增特性介绍

/some-module.js"; export { MyThing }; 上述代码只看的话我们是不知道 MyThing 是一个类型还是一个值,如果他是一个类型的话,那么 TS 使用的 transpileModule...Angular.js (1.x) 中,service 需要在全局注册,但是导入的 service 仅仅用于类型声明,因为上面提到的 import elision 特性,导致 service.js 中的代码不会被执行...,导致运行错误。.../some-module.js"; export type { SomeThing }; import type 被用作类型注释或声明的声明语句,总是会在 TS 转 JS 中被完全删除,不会出现在JS代码中...{}; 此外注意一点,Top-Level await 只在顶级模块工作,所以代码中需要含有 export 或者 import 才会认为该文件是一个模块。

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

    React报错之Rendered more hooks than during the previo

    为了解决该错误,将所有的钩子移到函数组件的顶层,以及不要在条件中使用钩子。 这里有个示例用来展示错误是如何发生的。...顶层调用 为了解决该错误,我们必须将条件移到钩子内部。因为React钩子只能在顶层调用。...条件之上 为了解决这个错误,把所有的钩子移到组件的顶层,在任何可能返回值的条件之上。...这是很有帮助的,因为钩子现在在顶层,并且有可预测的行为,允许React在调用useState和useEffect之间正确地保存状态。...就像文档中所说的那样: 只从React函数组件或自定义钩子中调用Hook 只在最顶层使用 Hook 不要在循环,条件或嵌套函数中调用 Hook 确保总是在你的 React 函数的最顶层以及任何 return

    53810

    Rspack 作者揭秘,你的 Tree Shaking 真的起作用了吗?

    它基于 ES2015 模块语法的静态结构,即 import 和 export。 这个概念及其名称由 ES2015 模块打包工具 rollup 推广。...针对这种情况,Webpack 提供了两个进行死代码消除(DCE)的机会: 在解析阶段,通过 ConstPlugin 执行基本的死代码消除,这有助于尽可能多地了解导入与导出变量的使用情况,从而优化后续的...= 2){ console.log(c); } 未使用的顶层声明 在模块中,若顶层声明未被导出,则可将其移除,因为它不产生额外的副作用。...属性:当一个模块包含多个顶层声明时,给每个声明标记纯注解可能既繁琐又容易出错。...optimization.sideEffects=true 和 stats.optimizationBailout=true 编译: Webpack 的日志清晰显示,util.js 中第7行的 console.log

    32610

    React报错之React hook useState is called conditionally

    为了解决该错误,将所有React钩子移到任何可能油返回值的条件之上。...import React, {useState} from 'react'; export default function App() { const [count, setCount] = useState...import React, {useState} from 'react'; export default function App() { const [count, setCount] = useState...这是不允许的,因为钩子的数量和钩子调用的顺序,在我们的函数组件的重新渲染中必须是相同的。 为了解决这个错误,我们必须把useState的调用移到顶层,而不是有条件地调用这个钩子。...就像文档中所说的: 只在最顶层使用 Hook 不要在循环,条件或嵌套函数中调用 Hook 确保总是在你的 React 函数的最顶层以及任何 return 之前使用 Hook 在 React 的函数组件中调用

    1.8K20

    【译】Typescript 3.8 常用新特性一览

    顶层 await 的使用; 这里只翻译了部分重要的特性,还有更多好玩的新特性可以看下面的参考链接原文查看。...1、类型限制的导入导出方法 (Type-Only Imports and Export) TypeScript 3.8为仅类型导入和导出添加了新语法。.../some-module.js"; export type { SomeThing }; 大家可以在 playground 上试一试,这样导入和导出,ts 是不会解析,这个特性不常用,如果你子配置如下问题的时候可能遇到...// menu.ts export const MENU1 = __('nav: 菜单 1'); export const MENU2 = __('nav: 菜单 2'); export const MENU3...{}; 请注意,这里有一个微妙之处:顶层await仅在模块的顶层起作用,并且只有当TypeScript找到一个真正可用的模块才允许使用,我们可以用一个 export {} 来检测是否在模块下使用。

    90120

    JS模块化规范总结(面试必备良药)

    按需加载(编译时加载) 2、import和export命令只能在模块的顶层,不能在代码块之中(如:if语句中),import()语句可以在代码块中实现异步动态按需动态加载 适用场景:浏览器或服务器环境(...以后可能支持) 用法: 1、导入:import {模块名A,模块名B…} from '模块路径' 2、导出:export和export default 3、import('模块路径').then()方法.../*错误的写法*/ // 写法一 export 1; // 写法二 var m = 1; export m; // 写法三 if (x === 2) { import MyModual from...export {n as m}; // 写法四 var n = 1; export default n; // 写法五 if (true) { import('..../module3.js'), ]) .then(([module1, module2, module3]) => { ··· }); 注意:export只支持对象形式导出,不支持值的导出,export

    1.8K20

    ES6 模块化入门

    export default 1 export default NaN export default 'foo' export default { foo: 'bar' } export default...Best Practices and export 如果同时使用命名导出,导出列表和默认导出,很容易造成困扰,所以大部分情况下作者建议只使用 export default,并且将语句放在模块文件的底部。...只使用 export default 具有一致性,不会因为过多导出方式造成混淆,在使用的时候也更加方便。 我们已经熟悉了 export 的 API 和注意事项,下面来看 import 语句。...import 'lodash' 在讲导入绑定之前,我们需要先明确的是,跟 export 语句类似,import 语句也只能在模块的顶层代码使用。...这能让编译器更好地处理解析工作,也能帮助其他静态分析工具解析我们的代码。

    79220

    ES Module

    default后面可以接任意表达式,而export语法只有3种 例如: // 不合法,语法错误 export { a: 1 }; // 而应该用export { name1, name2, …,...规则,可能会发展出最佳实践,在模块化与加载性能之间寻求平衡 三.特点 1.静态机制 不能在if,try-catch语句,函数或者eval等地方使用import,只能出现在模块最外层 并且import有提升...因为解析器没有办法推测出内容是不是ES Module(比如没有import, export关键字,也遵循严格模式,那么算不算个模块?)...URI和Blob URI import grape from 'data:text/javascript,export default "grape"';// create an empty ES module...,规范还处于草案第3阶段,更多信息请查看Native ECMAScript modules: dynamic import() 5.模块环境检测 检查当前执行环境是不是模块: const inModule

    94530

    ES11 来了,还学得动吗?

    静态加载:import/export声明只能出现在顶层作用域,不支持按需加载、懒加载 静态标识:模块标识只能是字符串字面量,不支持运行时动态计算而来的模块名 例如: if (Math.random())...()): import(specifier) import()“函数”输入模块标识specifier(其解析规则与import声明相同),输出Promise,例如: // 目标模块 ....,都由具体实现来定,所以特性提案里的希望浏览器支持的这两个属性将来可能支持也可能不支持 P.S.import.meta本身是个对象,原型为null export-ns-from 第三个 ES Module...只针对null和undefined,而&&遇到任意假值都会返回,有时无法满足需要 例如常用的正则提取目标串,语法描述相当简洁: 'string'.match(/(sing)/)?....只针对null和undefined,而||遇到任一假值都会返回右侧的默认值 四.大数运算 新增了一种基础类型,叫BigInt,提供大整数运算支持: BigInt is a new primitive that

    56510

    TypeScript 官方手册翻译计划【十三】:模块

    但随着时间的推移,社区和 JavaScript 规范在一种名为 ES 模块(或者称为 ES6 模块)的方案上达成了共识。你可能听说过它的 import/export 语法。...JavaScript 的模块是如何定义的 和 ECMAScript 2015 一样,TypeScript 会将任何包含顶层 import 或者 export 的文件视为一个模块。...反过来,一个不包含顶层 import 或者 export 声明的文件会被视为一个脚本,它的内容可以在全局作用域中访问到(因此对模块也是可见的)。 模块在自身的作用域而非全局作用域中执行。...JavaScript 规范表明,任何不包含 export 或者顶层 await 的 JavaScript 文件都应该被视为一个脚本,而不是一个模块。...TypeScript 的模块解析选项 模块解析是一个过程,它指的是从 import 或者 require 声明中提取一个字符串,并确定该字符串所指示的文件。

    1.1K20

    React报错之Rendered more hooks than during the previous render

    为了解决该错误,将所有的钩子移到函数组件的顶层,以及不要在条件中使用钩子。...顶层调用 为了解决该错误,我们必须将条件移到钩子内部。因为React钩子只能在顶层调用。...条件之上 为了解决这个错误,把所有的钩子移到组件的顶层,在任何可能返回值的条件之上。...这是很有帮助的,因为钩子现在在顶层,并且有可预测的行为,允许React在调用useState和useEffect之间正确地保存状态。...就像文档中所说的那样: 只从React函数组件或自定义钩子中调用Hook 只在最顶层使用 Hook 不要在循环,条件或嵌套函数中调用 Hook 确保总是在你的 React 函数的最顶层以及任何 return

    3.1K30

    ES2020

    静态加载:import/export声明只能出现在顶层作用域,不支持按需加载、懒加载 静态标识:模块标识只能是字符串字面量,不支持运行时动态计算而来的模块名 例如: if (Math.random())...()): import(specifier) import()“函数”输入模块标识specifier(其解析规则与import声明相同),输出Promise,例如: // 目标模块 ....,都由具体实现来定,所以特性提案里的希望浏览器支持的这两个属性将来可能支持也可能不支持 P.S.import.meta本身是个对象,原型为null export-ns-from 第三个 ES Module...只针对null和undefined,而&&遇到任意假值都会返回,有时无法满足需要 例如常用的正则提取目标串,语法描述相当简洁: 'string'.match(/(sing)/)?....只针对null和undefined,而||遇到任一假值都会返回右侧的默认值 四.大数运算 新增了一种基础类型,叫BigInt,提供大整数运算支持: BigInt is a new primitive that

    53120
    领券