我为有效的电话号码编写代码。但是当我编译项目时,我有以下错误:
从命令输出“”C:\ Program Files(x86)\ Microsoft SDKs \ TypeScript \ tsc“”C:.. \ Scripts \ MyScripts \ TS \ BuildPhone.ts“”C:.. \ Scripts \ MyScripts \ TS \ ProductsViewModel.ts“”C:.. \ Scripts \ MyScripts \ TS \ helloWorld.ts“”代码为1。
// Interface
interface IPhoneBuild
{
showPhone(): string;
checkPhone(): boolean;
}
class Phone
{
Code: string;
Number: string;
Fax: boolean;
}
// Module
module Phones
{
// Class
export class PhoneBuild implements IPhoneBuild
{
private phone: Phone;
private codes: string[];
// Constructor
constructor(public Number: string, public Code: string, public Codes: string[])
{
this.phone = this.buildPhone(Number, Code);
this.codes = Codes;
}
//Private Methods
private clearPhone(public reg: string)
{
var re = /\W/g;
return reg.replace(re, "");
}
private buildPhone(public num: string, public code: string)
{
var p: Phone = { Code: "", Number: "", Fax: false };
num = this.clearPhone(num);
if (num.length == 6)
{
p = { Code: code, Fax: false, Number: num };
}
if (num.length == 11)
{
p = { Code: num.substring(0, 4), Fax: false, Number: num.substring(4)};
}
return p;
}
// Instance member
public showPhone()
{
return this.phone.Code + this.phone.Number;
}
public checkPhone()
{
return this.phone.Number.length != 7 || this.phone.Code.length == 0;
}
}
}
我找到了解决方法:在方法中的属性中删除“public”:buildPhone和clearPhone。
答案 0 :(得分:2)
您不能将成员function
的参数声明为公开。这仅适用于构造函数,它用作以下的简写:
答案 1 :(得分:1)
我已经快速整理了你的代码。
如果在构造函数中使用public
或private
,则可以避免从参数到类的属性的映射,因为TypeScript编译器会自动为您执行此操作。
您的方法参数不需要这些访问修饰符 - 它们不能是public
或private
,因为它们是作用于函数的范围(即它们仅在函数的持续时间内存在且不能在功能之外访问。)
以下示例应该可以正常编译。
// Interface
interface IPhoneBuild
{
showPhone(): string;
checkPhone(): boolean;
}
class Phone
{
Code: string;
Number: string;
Fax: boolean;
}
// Module
module Phones
{
// Class
export class PhoneBuild implements IPhoneBuild
{
private phone: Phone;
// Constructor
constructor(phoneNumber: string, code: string, public codes: string[])
{
this.phone = this.buildPhone(phoneNumber, code);
}
//Private Methods
private clearPhone(reg: string)
{
var re = /\W/g;
return reg.replace(re, "");
}
private buildPhone(num: string, code: string)
{
var phone: Phone = { Code: "", Number: "", Fax: false };
num = this.clearPhone(num);
if (num.length == 6)
{
phone.Code = code;
phone.Number = num;
}
if (num.length == 11)
{
phone.Code = num.substring(0, 4);
phone.Number = num.substring(4);
}
return phone;
}
// Instance member
public showPhone()
{
return this.phone.Code + this.phone.Number;
}
public checkPhone()
{
return this.phone.Number.length != 7 || this.phone.Code.length == 0;
}
}
}