因为TypeScript在解析 let foo = {} 这段赋值语句时,会进行“类型推断”:它会认为等号左边 foo 的类型即为等号右边 {} 的类型。由于 {} 本没有任何属性,因此,像上面那样给 foo 添加属性时就会报错。最好的解决方案就是在为变量赋值的同时,添加属性及其对应的值:let foo = {bar: 123,bas: 'Hello World'};
TypeScript中函数参数可以能过?将参数标记为可选参数,参数声明后使用 = someValue添加默认参数值。
内联类型能为你快速的提供一个类型注解。它可以帮助你省去为类型起名的麻烦(你可能会使用一个很糟糕的名称)。然而,如果你发现需要多次使用相同的内联注解时,考虑把它重构为一个接口(或者是 type alias,它会在接下来的部分提到)是一个不错的主意。
在TypeScript里存在两种声明空间:类型声明空间与变量声明空间。像var、const、let声明的变量,也仅能在变量声明空间使用,不能用作类型注解。
默认情况下,当你在一个新的TypeScript文件中写下代码时,它处于全局命名空间中。如果在你的TypeScript文件的根级别位置含有import或者export,它会在这个文件中创建一个本地的作用域则标记为一个模块