(obj.fullName) {
alert(obj.fullName);
为了证明访问器现在正在检查安全码,我们可以修改安全码来看当安全码不匹配的时候,会不会弹出一个对话框说“您没有权限修改雇员信息!”。
修改passcode为12345时,弹出错误提醒:
注意:访问器要求你必须将编译器设置为输出ECMAScript 5。
说到这里,我们目前只讨论了类的实例成员,它们只有当类实例化时才会出现在对象上。我们也可以创建静态成员,它们对于类自身都是可见的而不是实例。下面的例子,我们在origin上使用了static关键字,因为它对于所有的grids都是通用的。每一个实例都可以通过附加的类名来访问这个值。和实例访问之前加上this关键字相似。
class Grid {
static orgin = { x: 0, yield: 0 };
calculateDistanceFromOrgin(point: { x: number,y:number }) {
var xDist = point.x - Grid.orgin.x;
var yDist = point.y - Grid.orgin.y;
return Math.sqrt(xDist * xDist + yDist * yDist) * this.scale;
constructor(public scale: number) {}
var grid1 = new Grid(1.0);//比例尺为1
var grid2 = new Grid(5.0);//比例尺为5
alert(grid1.calculateDistanceFromOrgin({ x: 10, y: 10 }));
alert(grid2.calculateDistanceFromOrgin({ x: 10, y: 10 }));
高级技术点
在TS中声明一个类的时候,实际上是一次创建了多个声明。第一个是实例类的类型。
class Greeter {
greeting: string;
constructor(message: string) {
this.greeting = message;
greet() {
return "Hello," + this.greeting;
var user:Greeter;
user = new Greeter("World!");
document.writeln(user.greet());
这里,当我们声明”var user:Greeter;”时,我们使用了Greeter作为Greeter类的实例的类型。这个对于来自面向对象语言的程序员来说几乎是第二个特性。
我们也通过调用构造函数创建其他值。这个函数是在我们new出类的实例的时候调用的。为了理解实践中它是什么样子,让我们通过上面的TS代码生成的JS代码来看一下:
var Greeter = (function () {
function Greeter(message) {
this.greeting = message;
Greeter.prototype.greet = function () {
return "Hello," + this.greeting;
return Greeter;
})();
var user = new Greeter("World!");
document.writeln(user.greet());
这里,“var user”将会被构造函数赋值。当我们调用new并运行这个函数的时候,我们得到了该类的一个实例。构造函数也包含了该类的所有静态成员。思考每个类的另外一种方式是类有实例的一面和静态的一面。
稍微修改一下例子看一下不同:
class Greeter {
static standardGreeting = "Hello,There";
greeting: string;
greet() {
if (this.greeting) {
return "Hello," + this.greeting;
} else {
return Greeter.standardGreeting;
var user: Greeter;
user = new Greeter();
alert(user.greet());
var greetMaker: typeof Greeter=Greeter;
greetMaker.standardGreeting = "Hey,there!";
var user2: Greeter = new greetMaker();
alert(user2.greet());
这个例子中,“user”和之前运行相似。我们实例化Greeter类,然后使用了这个对象。这个之前已经看到过。
下一个,然后我们直接只用类。这里我们创建了一个新的变量叫做“greetMaker”。这个变量保持了类本身,或者说成是它的构造函数。这里我们使用了typeof Greeter,意思是“给我们Greeter类本身的类型”而不是类型的实例。或者,更准确地说,“给我叫做Greeter的标志的类型”,它是构造函数的类型。这个类型包含了Greeter的所有的静态成员和创建Greeter类实例的构造函数。
使用类作为接口
正如之前说的,一个类的声明创建了两样东西:代表类的实例的类型和构造函数。因为类创建了类型,所以你可以在你可以使用接口的地方使用它们,例如:
class Point {
x: number;
y: number;
interface Point3D extends Point {
z: number;
var point3D: Point3D = { x: 1, y: 2, z: 3 };
如果您认为这篇文章还不错或者有所收获,您可以通过右边的“打赏”功能 打赏我一杯咖啡【物质支持】,也可以点击右下角的【好文要顶】按钮【精神支持】,因为这两种支持都是我继续写作,分享的最大动力!
声明:原创博客请在转载时保留原文链接或者在文章开头加上本人博客地址,如发现错误,欢迎批评指正。凡是转载于本人的文章,不能设置打赏功能,如有特殊需求请与本人联系!
已将所有赞助者统一放到单独页面!签名处只保留最近10条赞助记录!查看赞助者列表