Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 建议在Typescript中使用哪一种?类类型对象或具有多个参数的任何类型?_Javascript_Node.js_Typescript - Fatal编程技术网

Javascript 建议在Typescript中使用哪一种?类类型对象或具有多个参数的任何类型?

Javascript 建议在Typescript中使用哪一种?类类型对象或具有多个参数的任何类型?,javascript,node.js,typescript,Javascript,Node.js,Typescript,我不熟悉打字脚本和Javascript。我已经写了下面的代码,它工作得很好。我想了解哪一个是好的,建议在Typescript中使用。让我解释一下。当我们传递超过4个参数,比如说8个参数时,声纳会抱怨。因此,我们创建一个对象,填充所有必需的字段,并传递给函数,然后得到结果。我们还可以定义花括号内的所有字段,如下所示 const pType: any = {firstName: "John", lastName: "Abraham"}; 同时,我们可以定义这

我不熟悉打字脚本和Javascript。我已经写了下面的代码,它工作得很好。我想了解哪一个是好的,建议在Typescript中使用。让我解释一下。当我们传递超过4个参数,比如说8个参数时,声纳会抱怨。因此,我们创建一个对象,填充所有必需的字段,并传递给函数,然后得到结果。我们还可以定义花括号内的所有字段,如下所示

const pType: any = {firstName: "John", lastName: "Abraham"};
同时,我们可以定义这样的类

export class Person {

private _firstName: string = "";
private _lastName: string = "";

// All get set methods/functions

}
请帮助我了解以上两者之间的区别,哪一个更好,以及为什么在内存使用方面。为了简单起见,我编写了示例类

export class PassNReturnMultipleParams {
    
    public getAddress_Type1(person: Person): Address {
        console.log("First Name: ", person.firstName);
        // write logic to validate
        const address: Address = new Address();
        address.cityName = "Bangalore";
        address.flatName = "#123";
        address.streetName = "Richmond Road";
        
        return address;
    }
    
    public getAddress_Type2(pType: any): any {
        console.log("First Name: ", pType.firstName);
        // write logic to validate
        const adrsType: any = {cityName: "Bangalore", flatName: "#123", streetName: "Richmond Road"};
        return adrsType;
    }
    
    public check_Type1() {
        const person: Person = new Person();
        person.firstName = "John";
        // Set other values
        const adrs: Address = this.getAddress_Type1(person);
        console.log("Address City Name: ", adrs.cityName);
    }
    
    public check_Type2() {
        const pType: any = {firstName: "John", lastName: "Abraham"};
        // Set other values
        const adrs: any = this.getAddress_Type2(pType);
        console.log("Address City Name: ", adrs.cityName);
    }
    
}

const test: PassNReturnMultipleParams = new PassNReturnMultipleParams();
test.check_Type1();
test.check_Type2();

在上面的类中,有两个函数
getAddress\u Type1()
getAddress\u Type2()
,这两个函数在Javascript、Typescript世界中总是被推荐的。两者对我来说都很好。

依我看,打字脚本中不应该使用“any”。在这种情况下,我建议您使用带有接口的普通对象:

interface PersonType {
  firstName: string;
  lastName: string;
}

const pType: PersonType = {
  firstName: "John",
  lastName: "Abraham"
};

这个问题是基于观点的,但是你需要注意一些程序性原则

请求javascript对象和类之间的内存效率会导致错误,应该避免


你需要问问自己你真正需要什么。在您的情况下,它将是一种将数据存储为单个实例的“东西”,您可以轻松地检索它。如果只是存储一些您不会经常操作的东西,那么一个简单的
对象
就满足了所有要求。其他的东西可能过于工程化。

强烈建议通读一些javascript基础知识,因为你基本上要求对类系统和类型脚本进行完整的解释。我要问的是建议使用哪一个,哪一个应该是内存效率高的。我喜欢没有任何类结构的,即const pType。它叫什么名字
constptype:any={firstName:“John”,lastName:“Abraham”}?它看起来很精确。在您实际需要多个实例、构造函数和继承之前,请不要使用
类。@Bergi,请您提供一些解释性的最佳实践,我接受它作为答案。我同意你的意见,看起来不错。在某种程度上,这在Python中也是相同的概念。如果我从您的评论中理解正确,我们应该使用这种方法
const someValue:any={field1:“field value”,filed2:“field value”}
。我是对的吗?我在某种程度上同意你的看法,它只是存储了一些信息,可能并非总是这样。只想知道这个结构的名称是什么
pType:any={field1:“value1”,field2:“value2”}
?@PythonLearner这种结构在javascript中被称为A。嗨,Barinbritva,我喜欢你的答案,但是javascript提供了一种方法,因此总是有必要为某些数据持有者定义一个接口吗?我很想知道这方面广为接受的最佳实践。从技术上讲,你当然可以使用“any”。但这个想法是“any”“它是为向后兼容JavaScript而创建的类型。如果你真的想从使用TypeScript中获利,我相信,你应该到处指定类型。否则,用TypeScript替换JavaScript的实际意义还不清楚。