在 VSCode 源码中会有这样的代码
export class ChannelServer<TContext = string> implements IChannelServer<TContext>, IDisposable {
// ...
private protocolListener: IDisposable | null;
// ...
constructor(private protocol: IMessagePassingProtocol) {
this.protocolListener = this.protocol.onMessage(msg => this.onRawMessage(msg));
// ...
}
其中在 Class 实例化方法中参数是这样写的 private protocol: IMessagePassingProtocol
内部又对这个变量以 this.protocol
来使用的
做了一个小测试
class Name {
#n:number
c :number =123
p:number
constructor(private sp:number) {
this.#n = 0
this.p = this.sp
// this.c = 0
}
get k():Function{
return (e: any)=>{console.log(e);
}
}
}
let name1 = new Name(4)
console.log(name1);
使用 Deno 运行 $ deno run test.ts
Name { sp: 4, c: 123, p: 4 }
// 可以看到 sp 既当了实例方法的参数又当实例化后属性
- 要写成这样好像需要属性的修饰符 即 private 、readonly
- 应该要对这个参数定义类型,不然它会被默认认为 any
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。