国际化

https://zhuanlan.zhihu.com/p/291202582 相关方案及介绍

typescript

Record undefined 错误

Record定义了一个对象类型,其中所有key具有相同的类型,所有value具有相同的类型。 这非常适合表示值的映射和字典。

换句话说,Record<KeyType, ValueType> 等价于 { [key: KeyType]: ValueType }
从下方代码你可以看出,通过访问record对象的属性返回的值的类型应该和ValueType保持一致。然而你会发现这不是完全正确的,因为abc的值会是undefined。

  1. const languages: Record<string, string> = {
  2. 'c++': 'static',
  3. 'java': 'static',
  4. 'python': 'dynamic',
  5. };
  6. const abc: string = languages['abc']; // undefined

这是一个TypeScript选择了便利性而不是严格性的例子。
最简单的修复方式就是使Record的第二个参数可选:

  1. const languages: Partial<Record<string, string>> = {
  2. 'c++': 'static',
  3. 'java': 'static',
  4. 'python': 'dynamic',
  5. };
  6. const abc = languages['abc']; // abc is infer to string | underfined

* 除非你确保没问题,否则可以始终保持Record的值类型参数(第二个参数)可选
**

Canvas

measureText

  1. var text = "xxxxxx";
  2. var canvas = document.createElement('canvas')//首先创建一个canvas标签
  3. var ctx = canvas.getContext("2d");//把canvas的画笔给调出来
  4. ctx.font="30px Arial";//设置字体大小和字体,这一步很重要,直接影响了测量结果,因为14px和16px的字体的宽度是不一样的
  5. var width = ctx.measureText(text).width;//开始测量字体的宽度
  6. console.log('text的宽度为' + width);

image.png
image.png