国际化
https://zhuanlan.zhihu.com/p/291202582 相关方案及介绍
typescript
Record undefined 错误
Record定义了一个对象类型,其中所有key具有相同的类型,所有value具有相同的类型。 这非常适合表示值的映射和字典。
换句话说,Record<KeyType, ValueType>
等价于 { [key: KeyType]: ValueType }
。
从下方代码你可以看出,通过访问record对象的属性返回的值的类型应该和ValueType保持一致。然而你会发现这不是完全正确的,因为abc的值会是undefined。
const languages: Record<string, string> = {
'c++': 'static',
'java': 'static',
'python': 'dynamic',
};
const abc: string = languages['abc']; // undefined
这是一个TypeScript选择了便利性而不是严格性的例子。
最简单的修复方式就是使Record的第二个参数可选:
const languages: Partial<Record<string, string>> = {
'c++': 'static',
'java': 'static',
'python': 'dynamic',
};
const abc = languages['abc']; // abc is infer to string | underfined
* 除非你确保没问题,否则可以始终保持Record的值类型参数(第二个参数)可选
**
Canvas
measureText
var text = "xxxxxx";
var canvas = document.createElement('canvas')//首先创建一个canvas标签
var ctx = canvas.getContext("2d");//把canvas的画笔给调出来
ctx.font="30px Arial";//设置字体大小和字体,这一步很重要,直接影响了测量结果,因为14px和16px的字体的宽度是不一样的
var width = ctx.measureText(text).width;//开始测量字体的宽度
console.log('text的宽度为' + width);