如何获取 JavaScript/TypeScript 中某个类型的字符串?

问题描述 投票:0回答:4

在 C# 中你可以做这样的事情:

string typeName = typeof(int).FullName;

并且

typeName
的值将是
System.Int32
。 (参考这个问题供参考)。

所以,我的问题是,如何在 JavaScript 或 TypeScript 中实现同样的效果?

请注意,我不想从

object
获取类型名称,我只想从类型中获取它,就像上面的示例代码一样。

javascript typescript templates reflection
4个回答
1
投票

在Javascript中你可以使用

typeof variable_name

0
投票

我刚刚发现 Node.js 中的 type-name 包可以解决这个问题。


0
投票

为了在运行时实现更强的输入,您可以使用 Accelatrix:

https://www.nuget.org/packages/Accelatrix

https://www.npmjs.com/package/accelatrix

https://github.com/accelatrix/accelatrix

A型自省系统

JavaScript 的类型系统得到增强,包括四个基本操作:

- GetHashCode()
- GetType()
- Equals()
- ToString()

您现在可以像在 C# 中一样在运行时处理 JavaScript 中的类,例如:

var myDog = new Bio.Mammal(8);  
var myCat = new Bio.Feline(8, 9);

var timeIsSame = (new Date()).Equals(new Date());                //true           
var areEqual = myDog.Equals(myCat);                              // false           
var myCatType = myCat.GetType();                                 // Bio.Feline           
var myCatBaseType = myCat.GetType().BaseType;                    // Bio.Mammal           
var isAnimal = myCat.GetType().IsAssignableFrom(Bio.Animal);     // true           
var enums = Bio.TypesOfLocomotion.GetType();                     // Accelatrix.EnumType 

// 示例类:

export namespace Bio
{           
    export enum TypesOfLocomotion           
    {           
        Crawl,           
        Swim,           
        Walk,           
        Fly,           
    }           

    abstract class LivingBeing
    {
        public isExtinct = false;
    }

    export abstract class Eukaryotes extends LivingBeing
    {
        private locomotion: TypesOfLocomotion = null;

        public get Locomotion(): TypesOfLocomotion
        {
            return this.locomotion;
        }
        public set Locomotion(value: TypesOfLocomotion)
        {
            this.locomotion = value;
        }
    }

    export class Animal extends Eukaryotes
    {
        public isAnimal = true;

        public constructor()
        {
            super();
        }
    }
    
    export class Mammal extends Animal
    {
        private readonly numberOfTits: number;

        public constructor(numberOfTits: number)
        {
            super();
            this.numberOfTits = numberOfTits;
        }

        public get NumberOfTits(): number
        {
            return this.numberOfTits;
        }

        public SayHello(): string
        {
            return "Hello";
        }
    }

    export class Feline extends Mammal
    {
        private readonly numberOfLives: number;

        public constructor(numberOfTits: number, numberOfLives: number)
        {
            super(numberOfTits);
            this.numberOfLives = numberOfLives == null ? 9 : numberOfLives;
            this.Locomotion = TypesOfLocomotion.Walk;
        }

        public get NumberOfLives(): number
        {
            return this.numberOfLives;
        }
    }
}

-2
投票

var 类型名称 = 5;

这样你就可以在 javascript 中添加一个简单的警报。

例如,

alert(typeof typeName);

仅此而已。

© www.soinside.com 2019 - 2024. All rights reserved.