// javascript 实现
export const formatYear = function () {
let date = new Date().getFullYear();
let arr = [];
for (let i = 0; i < date + 10; i++) {
arr.push({
label: i,
value: i
return arr;
typescript实现
// 定义一个接口约束label和value值类型
interface labelValue {
label: number;
value: number;
let obj: labelValue;
export function formatYear (): labelValue[] {
let date = new Date().getFullYear();
let arr: labelValue[];
for (let i = 0; i < date + 10; i++) {
obj = {
label: i,
value: i
arr.push(obj)
return arr;
typescript 类型兼容
在public文件中再定义一个方法,也返回一个数组,但是label类型变为string
由于ts文件中label属性只能声明一次
所以需要用到类型变量来实现
T 表示传入的类型,可以为number、string、boolean等
传入什么label就是什么类型
interface labelValue<T> {
label: T;
value: number;
// 传入number类型
let obj: labelValue<number>;
export function formatYear (): labelValue<number>[] {
let date = new Date().getFullYear();
let arr: labelValue<number>[];
for (let i = 0; i < date + 10; i++) {
obj = {
label: i,
value: i
arr.push(obj)
return arr;
// 传入string类型
let obj1: labelValue<string>;
export function formatHours (): labelValue<string>[] {
let arr: labelValue<string>[];
for (let i = 0; i <= 24 + 10; i++) {
obj1 = {
label: i + 'h',
value: i
arr.push(obj1)
return arr;
定义一个方法,返回一个数组,数组的每一项均为对象,对象中包含label和value两个属性创建一个public.ts文件javascript实现// javascript 实现export const formatYear = function () { let date = new Date().getFullYear(); let arr = []; for (let i...
如果有 10 个、100 个这种方式就变的很不实用,这时我们可以使用数组来解决:
var sites:string[];
sites = ["Google","Runoob","Taobao"]
这样看起来就简洁多了。
TypeScript 声明数组的语法格式如下所示:
var array_name[:datat
for(i=`num_of_master;i>0;i--) begin
uvm_config_db#(virtual tv_ahb_master_intf)::set(null, "*", "vintf_master", vintf_master[i]);
结果直接报语法错误,google后...
interface{} 转为普通类型
我们都知道在golang中interface{}可以代表任何类型,对于像int64、bool、string等这些简单类型,interface{}类型转为这些简单类型时,直接使用
p, ok := t.(bool)
p, ok := t.(int64)
如果ok==true的话,就已经类型转换成功。
假设有这样一个场景,我们有一个函数有返回值,但是返回...
接口就是一种公共的规范标准,只要符合规范标准,就可以大家通用。
和我们的抽象类一致,只是定义的方式不一样
接口:是Java语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量、构造方法和成员方法,那么接口的内部主要就是封装了方法,包含抽象方法(JDK 7及以前),默认方法和静态方法(JDK 8),私有方法(JDK 9)。最重要的就是其中的抽象方法
接口的定义,它与定义类方法相似,但是使用interface关键字。它也会被编译成 .class文件,但一定要明确它不是类,而
模板编程中,类型是一种输入参数,对某一具体模板类,多数情况下,并不是所有的类型都适合,类型必须符合某种要求,模板类型约束就是在编译期,用于限制模板参数。其实在C++11的type_traits中,就有很多类似于is_const、is_base_of、enable_if、conditional这样的类型判断,类型选择,类型操作等函数,它们在编译期施加到类型参数上,起到了类型限制等作用。
C#中,早就引入where关键字,来进行泛型约束。这里C++中也为此引入两个关键字requires和concept,将类型
Introduction
Given that you can assign a variable of any type to an interface{}, often people will try code like the following.
var dataSlice []int = foo()
var interfaceSlice []interface{} = dataSli
interface 接口interface可以理解为两个程序达成的协议。
实际就是一个留给后续开发的框架。若想继承这个interface,就必须实现interface规定的
函数及结构等。一般会以大写I开头。
这里的IStore和Ispic都是接口。继承的hello类必须实现read
write,status属性和Ispic中的nihao这几个函数,如果没有,则程序不能执行
...
接口,是一种完全抽象的设计,没有任何实现。接口有以下3个特征:
1.所有的成员变量都是public、static、final类型。
2.所有的方法都是public、abstract类型。
3.所有的嵌套类型(类或接口)都是public、static类型。
4.即使以上3点没有显式的声明也是如此。
由此可知,接口中的所有成员都是public的,因为接口是抽象的,必须由其他类所实现,故成员一定