// 使用接口来描述函数对象
interface IFn {
(): number;
count: number;
}
// 实现IFn接口 这里如果使用 let 来声明 fn 变量就会报错,请问为什么不能使用let?
const fn: IFn = () => {
return fn.count++
}
fn.count = 0
// 使用接口来描述函数对象
interface IFn {
(): number;
count: number;
}
// 实现IFn接口 这里如果使用 let 来声明 fn 变量就会报错,请问为什么不能使用let?
const fn: IFn = () => {
return fn.count++
}
fn.count = 0
想用 let 的话也行,但需要手动断言:
let fn = (() => {
return fn.count++;
}) as IFn;
fn.count = 0;
原因的话 @IanSun 解释的是对的。
10 回答11.1k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
4 回答2.5k 阅读✓ 已解决
因为
const
是常量,在一个块作用域下,只能有一个同名常量。也就是,一旦用const
关键字申明了常量,在同个块中,这个变量都是同一个值。但是
let
不同。因为let
关键字申明的是变量。你代码中的fn
先申明的是一个函数。这个函数是缺少count
成员的。虽然你在后面紧跟的一句中增加了count
成员,但是因为是分开定义的,谁也不知道当中fn
还是不是一开始定义的函数。