A MAXScript-ben nincsenek alapvető típuskategóriák, gyakorlatilag minden értéknek tekintendő, minden osztály a rendszer gyökér osztályából, a Value-ból származik, amely biztosít olyan metódusokat és operátorokat, amelyek bármely osztály számára elérhetők. A rendszerben számos beépített típus van (Basic Data Values, Time Values, Bitmap Values, Stream Values, stb.). Új típust a már meglévő típusokat felhasználó struct definiálásával van lehetőségünk megadni.
A Value osztályból származó osztályok (azaz gyakorlatilag minden más osztály) számára biztosított operátorok és metódusok:
Alap esetben a struct típuskonstrukcióval megvalósítható a direktszorzat típus, gyakorlatilag legegyszerűbb esetben csupán a tagok neveinek felsorolásából áll a struct-definíció. Ahogy a nyelvben máshol, itt sem adható meg explicit típus. Értékadáskor létrejön egy példány, amely mezőit név szerint inicializálhatjuk. Amennyiben ilyenkor nem adunk egy mezőnek értéket, az a legelső értékadásig undefined értékkel bír.
Minden struct a Value osztályból származik, és implicit implementálásra kerülnek az ott lévő print(), format(), classOf(), superClassOf(), isKindOf(), == és != metódusok. Egyetlen kivételt a copy() metódus képez, amely nem származik a Value osztályból. Ez a metódus egy sekélyszintű másolatot hoz létre az adott struct-ból, így például egy hivatkozott tömböt tartalmazó struct másolata ugyanarra a tömbpéldányra fog a továbbiakban is hivatkozni.
A struct-okhoz két esemény is kötődik, szintaxisuk: on create do <expression> és on clone do <expression>. A hozzájuk kapcsolt kifejezés kerül végrehajtásra, amennyiben új pédányt hozunk létre az adott struct-ból, illetőleg amikor meghívjuk az adott példányra a copy műveletet. Az eseménykezelők implicit private-k.
Csak két láthatósági szint adható meg MAXScript-ben: a public és private, ezek is csak az általunk létrehozott struct-ok elemeire. Ha nem adunk meg láthatósági minősítőt, a program alapértelmezés szerint public-ként kezel minden mezőt. Private tagok csak a struct példányon belül érhetők el. Privát tag elérésének megkísérlése futási idejű hibát vált ki. Ha a struct egy kódolt szkriptben definiált (encrypted script – mse), akkor az adott tag értéke nem jelenik meg még a debugger-ben sem, illetve egyéb hibaüzenet-pufferben. A két támogatott eseménykezelő (on create do és on clone do) azonban mindig implicit privátok, viszont elláthatók public minősítéssel.