typescript值类型和引用类型的区别 javascript的typeof返回哪些数据类型
typescript值类型和引用类型的区别
using System
using System.Collections.Generic
using System.Text
namespace ConsoleApplication{
class Person
{
public int Blood = 10
}
class Program
{
public static void Add(int x)
{
x = 10
Console.WriteLine("值类型当参数被传递并修改之后:" x)
}
public static void Add(Person person)
{
person.Blood = 10
Console.WriteLine("引用类型当参数被传递并修改之后:" person.Blood)
}
static void Main(string[] args)
{
//值类型变量
int i = 10
Console.WriteLine("i的原值:" i)
Add(i)
Console.WriteLine("但是i的值并没有因为函数的修改而修改:" i)
//引用类型变量
Person person = new Person()
Console.WriteLine("Blood的原值:" person.Blood)
Add(person)
Console.WriteLine("但是Blood的值因为函数的修改而修改:" person.Blood)
//值类型和引用类型的区别,就在于当函数参数传递的时候.
//值类型是把自己的值复制一份传递给别的函数操作.无论复制的值怎么被改变.其自身的值是不会改变的
//而引用类型是把自己的内存地址传递给别的函数操作.操作的就是引用类型值的本身.所以值被函数改变了.
//这就是传值和传址的区别
Console.ReadLine()
}
}
}
javascript的typeof返回哪些数据类型
1-----undefined
        string
        boolean
        number  
        object -------对象或者null返回的是object
        function
这些是typeof返回的类型字符串
2------var box;
         alert(box) 没有初始化的变量就是undefined
3-----alert(typeof  box)
4-----var  box={};
       alert(typeof  box)
       就是object
5-----var  box={}
       alert(box)
       就是[object  object]
6----null派生自object
7---var  box =new  object()
      alert(box)
8----function  king(){}
       alert(king)
9-----var  box="wjje"
       alert(typeof  "wjje")
       alert(typeof   box)
10-----typeof  是内置的操作符而非函数
11-----不赋值的时候就是undefined
typescript怎么定义全局的函数
TypeScript 有两种模块化方式,一种是使用 ES6 的 import/export 及其 TS 对这种语法的微小扩展;另一种方式是使用 TS 特有的 namespace (命名空间)。在分析这两种模块化方式之前,我先推荐使用第一种方式,因为第二种方式涉及到模块引用顺序的问题(可以通过 ///
如果使用 namespace 方式的模块化,那么所有东西都是全局的,内部引用直接使用即可,TS 能识别出同一命名空间下export 的内容;外部引用导入即可;全局使用(比如在页面上的 内,把命名空间写完整就好(仅仍然只能使用export 的内容。
如果使用 ES6 模块方式的模块化,目前最好的方式可能就是挂到 window 上了,如果是在 Node 下,就需要挂到 global上。如果要兼容,就得写点代码来判断全局对象。一般来说,用 TypeScript 写代码,就已经决定了要模块化,除非很少的时候需要在页面的 中调用脚本中的某些对象,这种情况往 window 上挂就行。如果是要做为库来发布,tsc 是可以编译生成 .d.ts 文件的,如果是引用 js,那就不存在静态类型检查的问题;如果是引用 ts,那就以模块化的方式引用;如果想以全局的方式引用 ts,那就在在全局对象上挂一个入口对象,然后在文档里说明,使用前自己申明这个对象(不需要提供 .d.ts),也就几行代码的事情,也不算麻烦。比如
declare global {
interface Window {
myEntry: EntryClass
}
}
python函数的几种参数类型
#Python 2.5 #这个可以用修饰器来完成 #但是一般不会限制参数类型 #给你个思路: def argfilter(*types): def deco(func): #这是修饰器 def newfunc(*args): #新的函数 if len(types)==len(args): correct = True for i in range(len(args)): if not isinstance(args[i], types[i]): #判断类型 correct = False if correct: return func(*args) #返回原函数值 else: raise TypeError else: raise TypeError return newfunc #由修饰器返回新的函数 return deco #返回作为修饰器的函数 @argfilter(int, str) #指定参数类型 def func(i, s): #定义被修饰的函数 print i, s #之后你想限制类型的话, 就这样: #@argfilter(第一个参数的类名, 第二个参数的类名, ..., 第N个参数的类名) #def yourfunc(第一个参数, 第一个参数, ..., 第N个参数): # ... # #相当于: #def yourfunc(第一个参数, 第一个参数, ..., 第N个参数): # ... #yourfunc = argfilter(第一个参数的类名, 第二个参数的类名, ..., 第N个参数的类名)(yourfunc)